ZQuest Classic Coverage Report


Directory: src/
File: src/parser/y.tab.cpp
Date: 2024-05-02 03:25:59
Exec Total Coverage
Lines: 988 1753 56.4%
Functions: 39 51 76.5%
Branches: 751 2355 31.9%

Line Branch Exec Source
1 /* A Bison parser, made by GNU Bison 3.8.2. */
2
3 /* Skeleton implementation for Bison GLR parsers in C
4
5 Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <https://www.gnu.org/licenses/>. */
19
20 /* As a special exception, you may create a larger work that contains
21 part or all of the Bison parser skeleton and distribute that work
22 under terms of your choice, so long as that work isn't itself a
23 parser generator using the skeleton or a modified version thereof
24 as a parser skeleton. Alternatively, if you modify or redistribute
25 the parser skeleton itself, you may (at your option) remove this
26 special exception, which will cause the skeleton and the resulting
27 Bison output files to be licensed under the GNU General Public
28 License without this special exception.
29
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
32
33 /* C GLR parser skeleton written by Paul Hilfinger. */
34
35 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
36 especially those whose name start with YY_ or yy_. They are
37 private implementation details that can be changed or removed. */
38
39 /* Identify Bison output, and Bison version. */
40 #define YYBISON 30802
41
42 /* Bison version string. */
43 #define YYBISON_VERSION "3.8.2"
44
45 /* Skeleton name. */
46 #define YYSKELETON_NAME "glr.c"
47
48 /* Pure parsers. */
49 #define YYPURE 0
50
51
52
53
54
55
56 /* First part of user prologue. */
57 #line 8 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
58
59 #include "parserDefs.h"
60 #include <stdlib.h>
61 #include <stdio.h>
62 #include <cassert>
63 #include <string>
64 #include <set>
65 #include <sstream>
66 #include "ASTVisitors.h"
67 #include "CompileOption.h"
68 #include "zsyssimple.h"
69 #include "parser/ParserHelper.h"
70 #include "base/util.h"
71
72 using std::string;
73 using std::ostringstream;
74 using namespace ZScript;
75
76 #define YYINCLUDED_STDLIB_H
77 extern int32_t yydebug;
78 extern int32_t yyrow;
79 extern int32_t yycol;
80 extern char* yytext;
81 extern int32_t yyleng;
82 extern int32_t yylex(void);
83 extern FILE *yyin, *yyout;
84 extern ZScript::AST* first_identifier_for_line;
85 extern void resetLexer();
86 void yyerror(std::unique_ptr<ASTFile>& root, const char* s);
87 void yymsg(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
88 void yywarn(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
89 void yyerrmsg(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
90 void yydb(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
91 std::string curfilename;
92 extern YYLTYPE noloc;
93
94 #define push_front(v, elem) (v).insert((v).begin(), elem)
95 void trunc_str(std::string& str, size_t sz, std::string const& header, int32_t row = yyrow,
96 int32_t col = yycol, char const* txt = yytext)
97 {
98 if(str.size() > sz)
99 {
100 yyerrmsg("ERROR: "+header+": String value '" + str + "' is too long. Max '"+std::to_string(sz)+"' characters.", row, col, txt);
101 str = str.substr(0,sz);
102 }
103 }
104
105 enum
106 {
107 ANNTY_NONE,
108 ANNTY_STR,
109 ANNTY_INT,
110 ANNTY_MAX
111 };
112 static string annot_tys[ANNTY_MAX] = {"Empty", "String", "Number"};
113
114 int annot_row, annot_col;
115 string annot_err_txt;
116 static const string annot_err_header = "ERROR: Bad Annotation Value";
117 struct AnnotData
118 {
119 string key, strval;
120 string val, unescaped_val;
121 int intval;
122 uint type;
123 };
124 void annot_errstr(string const& str)
125 {
126 yyerrmsg(str, annot_row, annot_col, annot_err_txt.c_str());
127 }
128 void annot_trunc_str(string& str, size_t size)
129 {
130 trunc_str(str, size, annot_err_header, annot_row, annot_col, annot_err_txt.c_str());
131 }
132 bool annot_type_check(uint expected, AnnotData const& data)
133 {
134 if(expected == data.type)
135 return true;
136 annot_errstr("ERROR: Bad Annotation Value: @"+data.key
137 +" expects a "+annot_tys[expected]+", not a "+annot_tys[data.type]);
138 return false;
139 }
140 void handle_annotations(ASTAnnotationList* list, std::function<bool(AnnotData&)> fn)
141 {
142 owning_vector<ASTAnnotation>& set = list->set;
143 annot_row = list->location.first_line;
144 annot_col = list->location.first_column;
145 std::set<std::string> used_keys;
146 for(size_t q = 0; q < set.size(); ++q)
147 {
148 ASTAnnotation* a = set[q];
149 AnnotData data = AnnotData();
150 data.key = a->key->getValue();
151 data.type = ANNTY_NONE;
152 data.strval = "";
153 data.intval = 0;
154 if(a->strval)
155 {
156 data.type = ANNTY_STR;
157 data.strval = a->strval->getValue();
158 }
159 else if(a->intval)
160 {
161 data.type = ANNTY_INT;
162 data.intval = a->intval->getValue(nullptr);
163 }
164
165 data.val = "";
166 data.unescaped_val = "";
167 switch(data.type)
168 {
169 case ANNTY_STR:
170 data.val = data.strval;
171 data.unescaped_val = util::disallow_escapes(util::escape_characters(data.strval));
172 break;
173 case ANNTY_INT:
174 data.val = data.unescaped_val = to_string(data.intval);
175 break;
176 }
177 annot_err_txt = "@" + data.key + "(" + data.val + ")";
178
179 if(used_keys.contains(data.key))
180 {
181 annot_errstr("ERROR: Duplicate Annotation Key: @"+data.key+" was already set.");
182 continue;
183 }
184 if(!fn(data))
185 annot_errstr("ERROR: Bad Annotation Key: '"+data.val+"'");
186 }
187 delete list;
188 }
189
190 ASTExpr* handle_statement_expr(ASTExpr* expr)
191 {
192 if(ASTExprIncrement* increm = dynamic_cast<ASTExprIncrement*>(expr))
193 {
194 increm->is_pre = true;
195 }
196 else if(ASTExprDecrement* decrem = dynamic_cast<ASTExprDecrement*>(expr))
197 {
198 decrem->is_pre = true;
199 }
200 return expr;
201 }
202
203 #pragma warning( disable : 4065 )
204
205 #line 206 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
206
207 # ifndef YY_CAST
208 # ifdef __cplusplus
209 # define YY_CAST(Type, Val) static_cast<Type> (Val)
210 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
211 # else
212 # define YY_CAST(Type, Val) ((Type) (Val))
213 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
214 # endif
215 # endif
216 # ifndef YY_NULLPTR
217 # if defined __cplusplus
218 # if 201103L <= __cplusplus
219 # define YY_NULLPTR nullptr
220 # else
221 # define YY_NULLPTR 0
222 # endif
223 # else
224 # define YY_NULLPTR ((void*)0)
225 # endif
226 # endif
227
228 #include "y.tab.hpp"
229
230 /* Symbol kind. */
231 enum yysymbol_kind_t
232 {
233 YYSYMBOL_YYEMPTY = -2,
234 YYSYMBOL_YYEOF = 0, /* "end of file" */
235 YYSYMBOL_YYerror = 1, /* error */
236 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
237 YYSYMBOL_SCRIPT = 3, /* SCRIPT */
238 YYSYMBOL_ZCLASS = 4, /* ZCLASS */
239 YYSYMBOL_FOR = 5, /* FOR */
240 YYSYMBOL_LOOP = 6, /* LOOP */
241 YYSYMBOL_IF = 7, /* IF */
242 YYSYMBOL_ELSE = 8, /* ELSE */
243 YYSYMBOL_SWITCH = 9, /* SWITCH */
244 YYSYMBOL_CASE = 10, /* CASE */
245 YYSYMBOL_DEFAULT = 11, /* DEFAULT */
246 YYSYMBOL_RETURN = 12, /* RETURN */
247 YYSYMBOL_IMPORT = 13, /* IMPORT */
248 YYSYMBOL_ZTRUE = 14, /* ZTRUE */
249 YYSYMBOL_ZFALSE = 15, /* ZFALSE */
250 YYSYMBOL_WHILE = 16, /* WHILE */
251 YYSYMBOL_BREAK = 17, /* BREAK */
252 YYSYMBOL_CONTINUE = 18, /* CONTINUE */
253 YYSYMBOL_ZCONST = 19, /* ZCONST */
254 YYSYMBOL_DO = 20, /* DO */
255 YYSYMBOL_TYPEDEF = 21, /* TYPEDEF */
256 YYSYMBOL_EXPECTERROR = 22, /* EXPECTERROR */
257 YYSYMBOL_OPTIONVALUE = 23, /* OPTIONVALUE */
258 YYSYMBOL_ISINCLUDED = 24, /* ISINCLUDED */
259 YYSYMBOL_DEFINE = 25, /* DEFINE */
260 YYSYMBOL_ENUM = 26, /* ENUM */
261 YYSYMBOL_NAMESPACE = 27, /* NAMESPACE */
262 YYSYMBOL_USING = 28, /* USING */
263 YYSYMBOL_ALWAYS = 29, /* ALWAYS */
264 YYSYMBOL_ZASM = 30, /* ZASM */
265 YYSYMBOL_INCLUDE = 31, /* INCLUDE */
266 YYSYMBOL_INCLUDEPATH = 32, /* INCLUDEPATH */
267 YYSYMBOL_INCLUDEIF = 33, /* INCLUDEIF */
268 YYSYMBOL_UNTIL = 34, /* UNTIL */
269 YYSYMBOL_UNLESS = 35, /* UNLESS */
270 YYSYMBOL_REPEAT = 36, /* REPEAT */
271 YYSYMBOL_INLINE = 37, /* INLINE */
272 YYSYMBOL_INTERNAL = 38, /* INTERNAL */
273 YYSYMBOL_STATIC = 39, /* STATIC */
274 YYSYMBOL_CONSTEXPR = 40, /* CONSTEXPR */
275 YYSYMBOL_NEW = 41, /* NEW */
276 YYSYMBOL_DELETE = 42, /* DELETE */
277 YYSYMBOL_CASSERT = 43, /* CASSERT */
278 YYSYMBOL_ZAUTO = 44, /* ZAUTO */
279 YYSYMBOL_TEMPLATE_T = 45, /* TEMPLATE_T */
280 YYSYMBOL_TEMPLATE_T_ARR = 46, /* TEMPLATE_T_ARR */
281 YYSYMBOL_ZVOID = 47, /* ZVOID */
282 YYSYMBOL_UNTYPED = 48, /* UNTYPED */
283 YYSYMBOL_ZBOOL = 49, /* ZBOOL */
284 YYSYMBOL_ZFLOAT = 50, /* ZFLOAT */
285 YYSYMBOL_ZCHAR = 51, /* ZCHAR */
286 YYSYMBOL_ZLONG = 52, /* ZLONG */
287 YYSYMBOL_ZRGB = 53, /* ZRGB */
288 YYSYMBOL_COMMA = 54, /* COMMA */
289 YYSYMBOL_DOT = 55, /* DOT */
290 YYSYMBOL_SEMICOLON = 56, /* SEMICOLON */
291 YYSYMBOL_SCOPERES = 57, /* SCOPERES */
292 YYSYMBOL_COLON = 58, /* COLON */
293 YYSYMBOL_IN = 59, /* IN */
294 YYSYMBOL_LPAREN = 60, /* LPAREN */
295 YYSYMBOL_RPAREN = 61, /* RPAREN */
296 YYSYMBOL_LBRACKET = 62, /* LBRACKET */
297 YYSYMBOL_RBRACKET = 63, /* RBRACKET */
298 YYSYMBOL_LBRACE = 64, /* LBRACE */
299 YYSYMBOL_RBRACE = 65, /* RBRACE */
300 YYSYMBOL_QMARK = 66, /* QMARK */
301 YYSYMBOL_ARROW = 67, /* ARROW */
302 YYSYMBOL_INCREMENT = 68, /* INCREMENT */
303 YYSYMBOL_DECREMENT = 69, /* DECREMENT */
304 YYSYMBOL_NOT = 70, /* NOT */
305 YYSYMBOL_BITNOT = 71, /* BITNOT */
306 YYSYMBOL_EXPN = 72, /* EXPN */
307 1440 YYSYMBOL_TIMES = 73, /* TIMES */
308 YYSYMBOL_DIVIDE = 74, /* DIVIDE */
309 YYSYMBOL_MODULO = 75, /* MODULO */
310 YYSYMBOL_PLUS = 76, /* PLUS */
311 YYSYMBOL_MINUS = 77, /* MINUS */
312 YYSYMBOL_LSHIFT = 78, /* LSHIFT */
313 YYSYMBOL_RSHIFT = 79, /* RSHIFT */
314 57827 YYSYMBOL_LE = 80, /* LE */
315 57827 YYSYMBOL_LT = 81, /* LT */
316 YYSYMBOL_GE = 82, /* GE */
317 54 YYSYMBOL_GT = 83, /* GT */
318 54 YYSYMBOL_EQ = 84, /* EQ */
319
1/2
✓ Branch 0 taken 54 times.
✗ Branch 1 not taken.
54 YYSYMBOL_NE = 85, /* NE */
320 YYSYMBOL_BITAND = 86, /* BITAND */
321
2/6
✓ Branch 0 taken 1440 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1440 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1440 YYSYMBOL_BITXOR = 87, /* BITXOR */
322 YYSYMBOL_BITOR = 88, /* BITOR */
323 YYSYMBOL_AND = 89, /* AND */
324 YYSYMBOL_OR = 90, /* OR */
325 1387 YYSYMBOL_XOR = 91, /* XOR */
326 13 YYSYMBOL_ASSIGN = 92, /* ASSIGN */
327 107 YYSYMBOL_PLUSASSIGN = 93, /* PLUSASSIGN */
328 534 YYSYMBOL_MINUSASSIGN = 94, /* MINUSASSIGN */
329 26 YYSYMBOL_TIMESASSIGN = 95, /* TIMESASSIGN */
330 38149 YYSYMBOL_DIVIDEASSIGN = 96, /* DIVIDEASSIGN */
331 15348 YYSYMBOL_MODULOASSIGN = 97, /* MODULOASSIGN */
332 28 YYSYMBOL_LSHIFTASSIGN = 98, /* LSHIFTASSIGN */
333 YYSYMBOL_RSHIFTASSIGN = 99, /* RSHIFTASSIGN */
334 1052 YYSYMBOL_BITANDASSIGN = 100, /* BITANDASSIGN */
335 1183 YYSYMBOL_BITXORASSIGN = 101, /* BITXORASSIGN */
336 YYSYMBOL_BITORASSIGN = 102, /* BITORASSIGN */
337 YYSYMBOL_ANDASSIGN = 103, /* ANDASSIGN */
338 YYSYMBOL_ORASSIGN = 104, /* ORASSIGN */
339 YYSYMBOL_CAST = 105, /* CAST */
340 YYSYMBOL_RANGE = 106, /* RANGE */
341 YYSYMBOL_RANGE_L = 107, /* RANGE_L */
342 YYSYMBOL_RANGE_R = 108, /* RANGE_R */
343 YYSYMBOL_RANGE_LR = 109, /* RANGE_LR */
344 YYSYMBOL_RANGE_N = 110, /* RANGE_N */
345 YYSYMBOL_APPXEQUAL = 111, /* APPXEQUAL */
346 YYSYMBOL_DOUBLEBANG = 112, /* DOUBLEBANG */
347 YYSYMBOL_PERCENT = 113, /* PERCENT */
348 YYSYMBOL_BITNOTASSIGN = 114, /* BITNOTASSIGN */
349 YYSYMBOL_INVMOD = 115, /* INVMOD */
350 YYSYMBOL_DOUBLEADDR = 116, /* DOUBLEADDR */
351 YYSYMBOL_DOUBLESTAR = 117, /* DOUBLESTAR */
352 YYSYMBOL_HANDLE = 118, /* HANDLE */
353 YYSYMBOL_HANDLETOHANDLE = 119, /* HANDLETOHANDLE */
354 YYSYMBOL_ADDR = 120, /* ADDR */
355 YYSYMBOL_HASH = 121, /* HASH */
356 YYSYMBOL_ENDLINE = 122, /* ENDLINE */
357 YYSYMBOL_NEWLINE = 123, /* NEWLINE */
358 YYSYMBOL_OPTION = 124, /* OPTION */
359 YYSYMBOL_INHERIT = 125, /* INHERIT */
360 YYSYMBOL_IDENTIFIER = 126, /* IDENTIFIER */
361 YYSYMBOL_QUOTEDSTRING = 127, /* QUOTEDSTRING */
362 YYSYMBOL_CASESTRING = 128, /* CASESTRING */
363 YYSYMBOL_IMPORTSTRING = 129, /* IMPORTSTRING */
364 YYSYMBOL_SINGLECHAR = 130, /* SINGLECHAR */
365 YYSYMBOL_NUMBER = 131, /* NUMBER */
366 YYSYMBOL_LONGNUMBER = 132, /* LONGNUMBER */
367 YYSYMBOL_YYACCEPT = 133, /* $accept */
368 YYSYMBOL_Init = 134, /* Init */
369 YYSYMBOL_Global_List = 135, /* Global_List */
370 YYSYMBOL_Global_Statement = 136, /* Global_Statement */
371 133 YYSYMBOL_Namespace = 137, /* Namespace */
372 133 YYSYMBOL_Namespace_Block_List = 138, /* Namespace_Block_List */
373 133 YYSYMBOL_Namespace_Statement = 139, /* Namespace_Statement */
374
1/2
✓ Branch 0 taken 133 times.
✗ Branch 1 not taken.
133 YYSYMBOL_Using = 140, /* Using */
375 YYSYMBOL_AlwaysUsing = 141, /* AlwaysUsing */
376 133 YYSYMBOL_Import = 142, /* Import */
377 133 YYSYMBOL_IncludePath = 143, /* IncludePath */
378 133 YYSYMBOL_Option = 144, /* Option */
379
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 133 times.
133 YYSYMBOL_Statement_Assert = 145, /* Statement_Assert */
380 133 YYSYMBOL_DataTypeDef = 146, /* DataTypeDef */
381 133 YYSYMBOL_StandardDataTypedef = 147, /* StandardDataTypedef */
382 YYSYMBOL_EnumDataTypedef = 148, /* EnumDataTypedef */
383 YYSYMBOL_DataType = 149, /* DataType */
384 YYSYMBOL_ScriptTypeDef = 150, /* ScriptTypeDef */
385 YYSYMBOL_Data = 151, /* Data */
386 YYSYMBOL_Data_List = 152, /* Data_List */
387 YYSYMBOL_Data_Element = 153, /* Data_Element */
388 YYSYMBOL_Data_Element_Array_List = 154, /* Data_Element_Array_List */
389 YYSYMBOL_Single_Data_req_assign = 155, /* Single_Data_req_assign */
390 YYSYMBOL_Data_Element_Array_Element = 156, /* Data_Element_Array_Element */
391 YYSYMBOL_Data_Element_Array_Element_Size_List = 157, /* Data_Element_Array_Element_Size_List */
392 YYSYMBOL_Function = 158, /* Function */
393 YYSYMBOL_Function_Typeless = 159, /* Function_Typeless */
394 YYSYMBOL_Function_Heading = 160, /* Function_Heading */
395 YYSYMBOL_Function_Parameters_List = 161, /* Function_Parameters_List */
396 YYSYMBOL_Function_Parameters_Element = 162, /* Function_Parameters_Element */
397 YYSYMBOL_Function_Parameters_Bracket_Element = 163, /* Function_Parameters_Bracket_Element */
398 YYSYMBOL_Function_OptParams_List = 164, /* Function_OptParams_List */
399 YYSYMBOL_Function_VarArg_Element = 165, /* Function_VarArg_Element */
400 YYSYMBOL_Class_Ident = 166, /* Class_Ident */
401 YYSYMBOL_Class = 167, /* Class */
402 YYSYMBOL_Class_Block = 168, /* Class_Block */
403 YYSYMBOL_Class_Block_List = 169, /* Class_Block_List */
404 YYSYMBOL_Class_Constructor = 170, /* Class_Constructor */
405 YYSYMBOL_Class_Destructor = 171, /* Class_Destructor */
406 YYSYMBOL_Class_Data = 172, /* Class_Data */
407 YYSYMBOL_Class_Block_Element = 173, /* Class_Block_Element */
408 YYSYMBOL_Annotated_Script = 174, /* Annotated_Script */
409 YYSYMBOL_Script = 175, /* Script */
410 YYSYMBOL_Script_Type = 176, /* Script_Type */
411 YYSYMBOL_Script_Block = 177, /* Script_Block */
412 YYSYMBOL_Script_Block_List = 178, /* Script_Block_List */
413 YYSYMBOL_Script_Block_Element = 179, /* Script_Block_Element */
414 YYSYMBOL_Annotation_List = 180, /* Annotation_List */
415 YYSYMBOL_Annotation = 181, /* Annotation */
416 133 YYSYMBOL_Block_Statement = 182, /* Block_Statement */
417
2/4
✓ Branch 0 taken 133 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 133 times.
✗ Branch 3 not taken.
133 YYSYMBOL_Statement = 183, /* Statement */
418 YYSYMBOL_Statement_NoSemicolon = 184, /* Statement_NoSemicolon */
419 YYSYMBOL_Statement_Block = 185, /* Statement_Block */
420 YYSYMBOL_Statement_Block_List = 186, /* Statement_Block_List */
421 YYSYMBOL_Statement_If = 187, /* Statement_If */
422 YYSYMBOL_If_Body = 188, /* If_Body */
423 YYSYMBOL_Statement_Switch = 189, /* Statement_Switch */
424 1101 YYSYMBOL_Statement_Switch_Body = 190, /* Statement_Switch_Body */
425 1101 YYSYMBOL_Statement_Switch_Cases = 191, /* Statement_Switch_Cases */
426 1101 YYSYMBOL_Statement_For = 192, /* Statement_For */
427 1101 YYSYMBOL_Statement_CommaList = 193, /* Statement_CommaList */
428 1101 YYSYMBOL_Statement_For_Standard = 194, /* Statement_For_Standard */
429 YYSYMBOL_Statement_For_Each = 195, /* Statement_For_Each */
430 YYSYMBOL_Annotated_Loop = 196, /* Annotated_Loop */
431 YYSYMBOL_Statement_Loop = 197, /* Statement_Loop */
432 YYSYMBOL_Statement_Loop_Inf = 198, /* Statement_Loop_Inf */
433 YYSYMBOL_Statement_Loop_Range = 199, /* Statement_Loop_Range */
434 YYSYMBOL_Statement_Loop_Range_Base = 200, /* Statement_Loop_Range_Base */
435 YYSYMBOL_Token_In = 201, /* Token_In */
436 YYSYMBOL_Statement_While = 202, /* Statement_While */
437 YYSYMBOL_Statement_Do = 203, /* Statement_Do */
438 YYSYMBOL_Statement_Repeat = 204, /* Statement_Repeat */
439 YYSYMBOL_Statement_Return = 205, /* Statement_Return */
440 YYSYMBOL_Statement_CompileError = 206, /* Statement_CompileError */
441
2/6
✓ Branch 0 taken 133 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 133 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
133 YYSYMBOL_DataEnum = 207, /* DataEnum */
442 YYSYMBOL_Enum_Block = 208, /* Enum_Block */
443 YYSYMBOL_ScopeRes = 209, /* ScopeRes */
444 YYSYMBOL_Identifier_List = 210, /* Identifier_List */
445 YYSYMBOL_Scoperes_Identifier_List = 211, /* Scoperes_Identifier_List */
446 YYSYMBOL_Mixed_Identifier_List = 212, /* Mixed_Identifier_List */
447 YYSYMBOL_idlist_scopres = 213, /* idlist_scopres */
448 YYSYMBOL_idlist_dot = 214, /* idlist_dot */
449 YYSYMBOL_Ambigious_Iden_List = 215, /* Ambigious_Iden_List */
450 YYSYMBOL_Identifier = 216, /* Identifier */
451 YYSYMBOL_Func_Left = 217, /* Func_Left */
452 YYSYMBOL_Function_Call = 218, /* Function_Call */
453 26 YYSYMBOL_Function_Call_Parameters = 219, /* Function_Call_Parameters */
454 7 YYSYMBOL_Expr_1 = 220, /* Expr_1 */
455 YYSYMBOL_Expr_2 = 221, /* Expr_2 */
456 28 YYSYMBOL_Expr_Arrow = 222, /* Expr_Arrow */
457 1172 YYSYMBOL_Expr_3 = 223, /* Expr_3 */
458 YYSYMBOL_Expr_4 = 224, /* Expr_4 */
459 YYSYMBOL_Expr_5 = 225, /* Expr_5 */
460 YYSYMBOL_Expr_6 = 226, /* Expr_6 */
461 1 YYSYMBOL_Expr_7 = 227, /* Expr_7 */
462 YYSYMBOL_Expr_8 = 228, /* Expr_8 */
463 YYSYMBOL_Expr_9 = 229, /* Expr_9 */
464 YYSYMBOL_Expr_10 = 230, /* Expr_10 */
465 YYSYMBOL_Expr_11 = 231, /* Expr_11 */
466 YYSYMBOL_Expr_12 = 232, /* Expr_12 */
467 YYSYMBOL_Expr_13 = 233, /* Expr_13 */
468 YYSYMBOL_Expr_14 = 234, /* Expr_14 */
469 YYSYMBOL_Expr_15 = 235, /* Expr_15 */
470 YYSYMBOL_Expr_16 = 236, /* Expr_16 */
471 YYSYMBOL_Expr_17 = 237, /* Expr_17 */
472 YYSYMBOL_Expr_18 = 238, /* Expr_18 */
473 YYSYMBOL_Expression = 239, /* Expression */
474 YYSYMBOL_Statement_Expression = 240, /* Statement_Expression */
475 YYSYMBOL_Expression_Constant = 241, /* Expression_Constant */
476 YYSYMBOL_Expression_Const_Range = 242, /* Expression_Const_Range */
477 YYSYMBOL_Expression_Range = 243, /* Expression_Range */
478 YYSYMBOL_Literal = 244, /* Literal */
479 YYSYMBOL_QuotedString = 245, /* QuotedString */
480 YYSYMBOL_Literal_String = 246, /* Literal_String */
481 YYSYMBOL_Literal_Bool = 247, /* Literal_Bool */
482 YYSYMBOL_Literal_Array = 248, /* Literal_Array */
483 YYSYMBOL_Literal_Array_Body = 249 /* Literal_Array_Body */
484 };
485 typedef enum yysymbol_kind_t yysymbol_kind_t;
486
487
488 /* Default (constant) value used for initialization for null
489 right-hand sides. Unlike the standard yacc.c template, here we set
490 1068 the default value of $$ to a zeroed-out value. Since the default
491
3/8
✓ Branch 0 taken 1068 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1068 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1068 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1068 value is undefined, this behavior is technically correct. */
492 static YYSTYPE yyval_default;
493 static YYLTYPE yyloc_default
494 319 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
495
3/8
✓ Branch 0 taken 319 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 319 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 319 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
319 = { 1, 1, 1, 1 }
496 # endif
497 ;
498
499
500
501 #include <stddef.h>
502 #include <stdint.h>
503 #include <stdio.h>
504 #include <stdlib.h>
505 #include <string.h>
506
507 13 #ifdef short
508
3/8
✓ Branch 0 taken 13 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 13 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 13 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
13 # undef short
509 #endif
510
511 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
512 <limits.h> and (if available) <stdint.h> are included
513 so that the code can choose integer types of a good width. */
514
515 #ifndef __PTRDIFF_MAX__
516 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
517 54 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
518 54 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
519
3/8
✓ Branch 0 taken 54 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 54 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 54 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
54 # define YY_STDINT_H
520 # endif
521 #endif
522
523 /* Narrow types that promote to a signed type and that can represent a
524 signed or unsigned integer of at least N bits. In tables they can
525 save space and decrease cache pressure. Promoting to a signed type
526 helps avoid bugs in integer arithmetic. */
527
528 #ifdef __INT_LEAST8_MAX__
529 typedef __INT_LEAST8_TYPE__ yytype_int8;
530 #elif defined YY_STDINT_H
531 typedef int_least8_t yytype_int8;
532 #else
533 typedef signed char yytype_int8;
534 #endif
535
536 #ifdef __INT_LEAST16_MAX__
537 typedef __INT_LEAST16_TYPE__ yytype_int16;
538 #elif defined YY_STDINT_H
539 typedef int_least16_t yytype_int16;
540 #else
541 typedef short yytype_int16;
542 #endif
543
544 /* Work around bug in HP-UX 11.23, which defines these macros
545 incorrectly for preprocessor constants. This workaround can likely
546 be removed in 2023, as HPE has promised support for HP-UX 11.23
547 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
548 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
549 #ifdef __hpux
550 # undef UINT_LEAST8_MAX
551 # undef UINT_LEAST16_MAX
552 # define UINT_LEAST8_MAX 255
553 # define UINT_LEAST16_MAX 65535
554 #endif
555
556 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
557 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
558 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
559 && UINT_LEAST8_MAX <= INT_MAX)
560 typedef uint_least8_t yytype_uint8;
561 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
562 typedef unsigned char yytype_uint8;
563 #else
564 typedef short yytype_uint8;
565 #endif
566
567 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
568 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
569 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
570 && UINT_LEAST16_MAX <= INT_MAX)
571 typedef uint_least16_t yytype_uint16;
572 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
573 typedef unsigned short yytype_uint16;
574 #else
575 typedef int yytype_uint16;
576 #endif
577 #ifndef YYPTRDIFF_T
578 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
579 # define YYPTRDIFF_T __PTRDIFF_TYPE__
580 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
581 # elif defined PTRDIFF_MAX
582 176 # ifndef ptrdiff_t
583 365 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
584 # endif
585 # define YYPTRDIFF_T ptrdiff_t
586 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
587 176 # else
588 176 # define YYPTRDIFF_T long
589
4/10
✓ Branch 0 taken 176 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 176 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 176 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 176 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
176 # define YYPTRDIFF_MAXIMUM LONG_MAX
590 # endif
591 #endif
592
593 #ifndef YYSIZE_T
594 365 # ifdef __SIZE_TYPE__
595 365 # define YYSIZE_T __SIZE_TYPE__
596
3/8
✓ Branch 0 taken 365 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 365 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 365 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
365 # elif defined size_t
597 # define YYSIZE_T size_t
598 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
599 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
600 11248 # define YYSIZE_T size_t
601 11248 # else
602 11248 # define YYSIZE_T unsigned
603 # endif
604 #endif
605
2/6
✓ Branch 0 taken 17 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 17 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
17
606
2/6
✓ Branch 0 taken 364 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 364 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
364 #define YYSIZE_MAXIMUM \
607
2/6
✓ Branch 0 taken 364 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 364 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
364 YY_CAST (YYPTRDIFF_T, \
608
2/6
✓ Branch 0 taken 13295 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 13295 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
13295 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
609
2/6
✓ Branch 0 taken 2890 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2890 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2890 ? YYPTRDIFF_MAXIMUM \
610
2/6
✓ Branch 0 taken 16123 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 16123 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
16123 : YY_CAST (YYSIZE_T, -1)))
611
2/6
✓ Branch 0 taken 111250 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 111250 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
111250
612
2/6
✓ Branch 0 taken 8339 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8339 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
8339 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
613
2/6
✓ Branch 0 taken 1250 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1250 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1250
614
2/6
✓ Branch 0 taken 286 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 286 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
286
615 #ifndef YY_
616 # if defined YYENABLE_NLS && YYENABLE_NLS
617 44728 # if ENABLE_NLS
618 44728 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
619
1/4
✓ Branch 0 taken 44728 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
89456 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
620 # endif
621 # endif
622 # ifndef YY_
623 # define YY_(Msgid) Msgid
624 # endif
625 #endif
626 26
627 26
628
3/8
✓ Branch 0 taken 26 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 26 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 26 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
26 #ifndef YYFREE
629 # define YYFREE free
630 #endif
631 #ifndef YYMALLOC
632 # define YYMALLOC malloc
633 #endif
634 #ifndef YYREALLOC
635 # define YYREALLOC realloc
636 #endif
637 35464
638
1/2
✓ Branch 0 taken 35464 times.
✗ Branch 1 not taken.
35464 #ifdef __cplusplus
639 typedef bool yybool;
640 35464 # define yytrue true
641 35464 # define yyfalse false
642 #else
643 82048 /* When we move to stdbool, get rid of the various casts to yybool. */
644 82048 typedef signed char yybool;
645 82048 # define yytrue 1
646
2/2
✓ Branch 0 taken 79558 times.
✓ Branch 1 taken 2490 times.
82048 # define yyfalse 0
647 2490 #endif
648 82048
649 82048 #ifndef YYSETJMP
650 # include <setjmp.h>
651 # define YYJMP_BUF jmp_buf
652 # define YYSETJMP(Env) setjmp (Env)
653 /* Pacify Clang and ICC. */
654 42 # define YYLONGJMP(Env, Val) \
655 42 do { \
656 42 longjmp (Env, Val); \
657 42 YY_ASSERT (0); \
658 42 } while (yyfalse)
659 #endif
660 82048
661
2/6
✓ Branch 0 taken 82048 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 82048 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
82048 #ifndef YY_ATTRIBUTE_PURE
662 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
663
2/2
✓ Branch 0 taken 46779 times.
✓ Branch 1 taken 35269 times.
82048 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
664 35269 # else
665 # define YY_ATTRIBUTE_PURE
666 # endif
667 #endif
668
669 #ifndef YY_ATTRIBUTE_UNUSED
670 46217 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
671 46217 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
672 46217 # else
673 46217 # define YY_ATTRIBUTE_UNUSED
674 46217 # endif
675 58646 #endif
676
677 /* The _Noreturn keyword of C11. */
678 #ifndef _Noreturn
679 # if (defined __cplusplus \
680 8560 && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
681 8560 || (defined _MSC_VER && 1900 <= _MSC_VER)))
682 8560 # define _Noreturn [[noreturn]]
683 8560 # elif ((!defined __cplusplus || defined __clang__) \
684 8560 && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
685 || (!defined __STRICT_ANSI__ \
686 104863 && (4 < __GNUC__ + (7 <= __GNUC_MINOR__) \
687
2/6
✓ Branch 0 taken 104863 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 104863 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
104863 || (defined __apple_build_version__ \
688 ? 6000000 <= __apple_build_version__ \
689
2/4
✓ Branch 0 taken 104863 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 104863 times.
✗ Branch 3 not taken.
104863 : 3 < __clang_major__ + (5 <= __clang_minor__))))))
690 /* _Noreturn works as-is. */
691 # elif (2 < __GNUC__ + (8 <= __GNUC_MINOR__) || defined __clang__ \
692
2/2
✓ Branch 0 taken 37371 times.
✓ Branch 1 taken 67492 times.
104863 || 0x5110 <= __SUNPRO_C)
693 # define _Noreturn __attribute__ ((__noreturn__))
694 # elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0)
695 # define _Noreturn __declspec (noreturn)
696 # else
697 # define _Noreturn
698 # endif
699 #endif
700
701 /* Suppress unused-variable warnings by "using" E. */
702 #if ! defined lint || defined __GNUC__
703 # define YY_USE(E) ((void) (E))
704 #else
705 # define YY_USE(E) /* empty */
706 #endif
707
708 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
709 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
710 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
711 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
712 416 _Pragma ("GCC diagnostic push") \
713 416 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
714 416 # else
715
2/6
✓ Branch 0 taken 8144 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8144 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
8144 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
716 _Pragma ("GCC diagnostic push") \
717 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
718 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
719 # endif
720 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
721 _Pragma ("GCC diagnostic pop")
722 #else
723 # define YY_INITIAL_VALUE(Value) Value
724 #endif
725 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
726 416 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
727
2/6
✓ Branch 0 taken 416 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 416 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
416 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
728 #endif
729 #ifndef YY_INITIAL_VALUE
730 # define YY_INITIAL_VALUE(Value) /* Nothing. */
731 #endif
732
733 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
734 # define YY_IGNORE_USELESS_CAST_BEGIN \
735 _Pragma ("GCC diagnostic push") \
736 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
737 # define YY_IGNORE_USELESS_CAST_END \
738 494 _Pragma ("GCC diagnostic pop")
739
1/2
✓ Branch 0 taken 494 times.
✗ Branch 1 not taken.
494 #endif
740 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
741 # define YY_IGNORE_USELESS_CAST_BEGIN
742 # define YY_IGNORE_USELESS_CAST_END
743 #endif
744 494
745 494
746 #define YY_ASSERT(E) ((void) (0 && (E)))
747
748 /* YYFINAL -- State number of the termination state. */
749 #define YYFINAL 3
750 /* YYLAST -- Last index in YYTABLE. */
751 #define YYLAST 2794
752
753 /* YYNTOKENS -- Number of terminals. */
754 #define YYNTOKENS 133
755 /* YYNNTS -- Number of nonterminals. */
756 #define YYNNTS 117
757 /* YYNRULES -- Number of rules. */
758 #define YYNRULES 383
759 /* YYNSTATES -- Number of states. */
760 #define YYNSTATES 744
761 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */
762 #define YYMAXRHS 11
763 /* YYMAXLEFT -- Maximum number of symbols to the left of a handle
764 accessed by $0, $-1, etc., in any rule. */
765 #define YYMAXLEFT 0
766
767 /* YYMAXUTOK -- Last valid token kind. */
768 #define YYMAXUTOK 387
769
770 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
771 as returned by yylex, with out-of-bounds checking. */
772 #define YYTRANSLATE(YYX) \
773 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
774 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
775 : YYSYMBOL_YYUNDEF)
776 21216
777
1/2
✓ Branch 0 taken 21216 times.
✗ Branch 1 not taken.
21216 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
778 as returned by yylex. */
779 static const yytype_uint8 yytranslate[] =
780 {
781 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
782
1/2
✓ Branch 0 taken 21216 times.
✗ Branch 1 not taken.
21216 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
783 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
784 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
785 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
786 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
787 21216 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
788 21216 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
789 21216 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
790 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
791 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
792 34799 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
793 34799 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
794
2/2
✓ Branch 0 taken 33083 times.
✓ Branch 1 taken 1716 times.
34799 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
795 1716 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
796 34799 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
797 34799 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
798 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
799 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
800 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
801 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
802 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
803 13591 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
804 13591 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
805 13591 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
806 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
807 22282 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
808 22282 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
809
4/18
✓ Branch 0 taken 22282 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22282 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 22282 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 22282 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
44564 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
810 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
811 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
812 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
813 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
814 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
815 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
816 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
817 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
818 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
819 125, 126, 127, 128, 129, 130, 131, 132
820 35873 };
821 35873
822 35873 #if YYDEBUG
823 35873 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
824 35873 static const yytype_int16 yyrline[] =
825 35873 {
826 0, 307, 307, 313, 316, 321, 325, 326, 327, 328,
827 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
828 339, 350, 370, 423, 429, 440, 445, 453, 454, 455,
829 456, 457, 458, 459, 460, 461, 462, 463, 464, 474,
830 46775 480, 489, 493, 497, 506, 516, 522, 527, 532, 537,
831 46775 542, 547, 550, 553, 556, 559, 562, 571, 574, 582,
832 46775 583, 586, 593, 599, 605, 606, 607, 608, 609, 610,
833 46775 611, 612, 613, 614, 616, 625, 636, 642, 653, 659,
834 46775 669, 675, 679, 685, 698, 711, 715, 719, 725, 736,
835 747, 763, 774, 791, 801, 806, 811, 818, 829, 835,
836 27505 840, 841, 842, 846, 855, 866, 874, 884, 893, 896,
837
2/6
✓ Branch 0 taken 27505 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 27505 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
27505 907, 908, 912, 918, 928, 933, 944, 949, 954, 959,
838 973, 983, 996, 1010, 1014, 1015, 1019, 1020, 1021, 1022,
839 1023, 1034, 1234, 1247, 1254, 1255, 1259, 1265, 1275, 1280,
840 3061 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1302, 1306, 1313,
841 1318, 1323, 1328, 1334, 1340, 1350, 1367, 1368, 1369, 1370,
842
2/6
✓ Branch 0 taken 5307 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5307 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5307 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381,
843 1382, 1383, 1388, 1389, 1394, 1395, 1396, 1401, 1402, 1403,
844 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414,
845 1415, 1420, 1421, 1426, 1427, 1431, 1432, 1436, 1441, 1448,
846 1453, 1461, 1462, 1470, 1474, 1479, 1483, 1491, 1498, 1505,
847 81735 1515, 1520, 1524, 1529, 1536, 1541, 1546, 1553, 1560, 1561,
848 81735 1565, 1570, 1578, 1590, 1606, 1615, 1628, 1652, 1656, 1657,
849
2/6
✓ Branch 0 taken 81735 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 81735 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
81735 1661, 1669, 1676, 1680, 1690, 1700, 1708, 1718, 1728, 1739,
850 1740, 1744, 1748, 1753, 1759, 1769, 1773, 1778, 1784, 1794,
851 1801, 1804, 1808, 1816, 1817, 1825, 1831, 1883, 1888, 1889,
852 1890, 1891, 1895, 1896, 1905, 1913, 1921, 1929, 1940, 1948,
853 1956, 1963, 1971, 1982, 1992, 1996, 1997, 2001, 2008, 2015,
854 2021, 2030, 2036, 2048, 2049, 2050, 2052, 2062, 2070, 2076,
855 2078, 2080, 2082, 2084, 2087, 2090, 2092, 2094, 2096, 2098,
856 2100, 2103, 2105, 2108, 2110, 2112, 2114, 2117, 2119, 2121,
857 2124, 2126, 2128, 2131, 2133, 2135, 2137, 2139, 2142, 2144,
858 2146, 2148, 2150, 2153, 2155, 2158, 2160, 2163, 2165, 2168,
859 2170, 2173, 2175, 2178, 2180, 2189, 2190, 2197, 2199, 2201,
860 2206, 2211, 2216, 2221, 2226, 2231, 2236, 2242, 2248, 2253,
861 2258, 2263, 2269, 2272, 2279, 2285, 2296, 2301, 2306, 2311,
862 2316, 2321, 2326, 2331, 2336, 2346, 2349, 2352, 2356, 2357,
863 2358, 2359, 2363, 2370, 2376, 2380, 2389, 2390, 2395, 2407,
864 2417, 2428, 2435, 2440
865 };
866 #endif
867 4394
868 4394 #define YYPACT_NINF (-607)
869 4394 #define YYTABLE_NINF (-354)
870 4394
871 4394 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
872 4394 STATE-NUM. */
873 4394 static const yytype_int16 yypact[] =
874 {
875 3061 -607, 80, 862, -607, 77, -83, -25, 902, 902, 76,
876 3061 28, -18, 95, 116, 1370, 1498, 1370, 1370, 115, -607,
877
2/6
✓ Branch 0 taken 3061 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3061 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3061 -607, -607, -607, -607, -607, -607, -607, -607, -607, -607,
878 58, 32, 197, -607, -607, 154, 171, -607, -607, -607,
879 204, 214, -607, -607, -18, 231, 240, -607, -607, -607,
880 -607, 238, -7, -607, 245, 191, -607, 31, 202, 216,
881 253, -607, 213, -607, 299, -607, -607, -607, 248, 2553,
882 191, 902, 305, 323, 252, 252, -18, 349, 1370, -18,
883 -607, -607, -607, -607, -607, 2553, 329, 262, 269, 346,
884 24, -607, -607, -607, -607, 360, -607, -9, -607, 110,
885 355, 185, -607, -607, 290, 301, -607, -607, -607, -607,
886 191, 191, 191, 191, 191, 191, 191, 191, 291, 995,
887 -607, -607, -607, -607, 361, 370, -18, 2553, 2553, 2553,
888 2605, 2605, 2605, 2605, 2605, 902, -607, -607, -607, -607,
889 373, 374, -607, -607, -607, 375, 140, -607, 348, 205,
890 176, 234, 247, 41, 350, 351, 354, 356, 33, -607,
891 2308, -607, -607, 376, -607, 316, -607, -607, -607, -607,
892 30, -607, 380, 191, 1816, -607, -18, 117, 10, -607,
893 1052 -607, 2553, 1937, 1989, 191, 2247, 2553, -607, -607, 428,
894 1186, -607, 885, 382, -607, -607, -607, -607, -607, -607,
895 -607, -607, -607, -607, 388, 2037, -607, -18, 325, 395,
896 -607, 399, 404, -607, -607, -607, 2668, -607, -607, 405,
897 1052 -607, 406, 355, 324, 334, 407, -607, 413, -607, 36,
898 1052 -607, -607, -607, -607, -607, 81, 2299, 2553, 339, -607,
899 1052 -607, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
900 1052 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
901 1052 2605, 2605, 2605, 2553, 2553, 2553, 2553, 2553, 2553, 2553,
902
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1052 times.
1052 2553, 2553, 2553, 2553, 2553, 2553, 2553, 1761, -607, 191,
903 1052 -607, 191, 105, 415, -607, -607, 1867, -607, 410, -607,
904 420, 423, 424, 425, -607, -607, -607, -607, 427, -607,
905 357, -607, -607, 203, 426, 432, -11, 434, 220, 225,
906 229, 239, 243, 250, -607, -607, 67, -607, -607, 2553,
907 1047 429, 435, 438, 439, 2553, 440, -28, -24, 1570, 441,
908
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 442, 438, 443, 2128, -607, 1186, -607, 430, -607, 448,
909 449, 191, 452, 43, -607, -607, 1314, -607, -607, -607,
910 -607, -607, -607, -607, -607, -607, 501, -607, -607, -607,
911 457, 459, 463, 1, -607, 464, 902, 191, 460, -3,
912 -607, -607, 743, -607, 2553, -607, -607, -607, -607, -607,
913 53102 -607, -607, -607, -607, -607, -607, -607, 462, 465, 2375,
914 53102 -607, 2553, -607, 2400, 454, -607, 145, -607, 447, -607,
915 53102 -607, 348, 348, 348, 205, 205, 176, 176, 234, 234,
916 53102 234, 234, 247, 247, 247, 247, 41, 350, 351, 354,
917 53102 466, 356, -607, -607, -607, -607, -607, -607, -607, -607,
918 -607, -607, -607, -607, -607, -607, 273, -607, -607, 127,
919 -607, 2553, -607, -607, -607, -607, -607, -607, -607, -607,
920 -607, 7, 467, 469, -607, -607, -607, 402, -607, -607,
921 -607, -607, -607, -607, -607, -607, -607, -607, -607, -607,
922 2553, -607, 476, 1698, 2081, 2146, -607, 2553, -607, 2553,
923 -607, 477, -607, 478, 62, -607, 2553, 2553, -607, 2553,
924 481, -607, -607, -607, -607, -607, -607, -607, -607, 1570,
925 -607, -607, -607, -607, 479, -607, -607, -607, 885, 2553,
926 482, -607, 490, -607, 493, 494, 495, -607, 1633, -607,
927 497, 499, -607, -607, -607, 157, -607, 455, 491, -607,
928 -607, 2553, -607, -607, 2605, -607, 500, -607, -607, -607,
929 30 502, -607, -607, 431, 436, -607, -607, 509, -607, -607,
930 30 -607, -607, -607, -607, -607, -607, -607, -607, 321, -607,
931 30 2553, 1570, 2553, 321, 444, 158, 168, 191, 505, 508,
932 30 510, 513, -607, -607, 498, 516, 518, 521, 522, -607,
933 514, -607, 533, 2553, -607, -607, -607, -607, -607, -607,
934 3 -607, -607, 1115, -607, 524, 506, -607, -607, 1919, -607,
935 3 -607, -607, 2553, -607, -607, 2553, 169, -607, 538, 2452,
936
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
3 321, 2553, 2553, 2553, 2553, 2553, 2553, 1570, 503, 1570,
937 1570, 530, 1570, 2553, 2553, 1698, 1570, 1570, 191, 902,
938 536, -607, 2553, 539, -607, 544, 541, 2553, 2553, 177,
939 2452, -607, -607, -607, -607, -607, 547, -607, 2553, 597,
940 601, 394, 602, 550, 551, -607, 606, -607, -607, 534,
941 -607, 1243, 133, 2528, 1698, 1570, 183, 275, 2553, 1570,
942 3 178, 1570, -607, 1570, 1570, 326, 564, 64, 1058, 1570,
943 3 620, 621, 1570, -607, -607, -607, 139, -607, 189, 624,
944 -607, -607, -607, -607, 572, -607, 2553, 1570, -607, -607,
945
2/6
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6 -607, 577, 158, 581, 583, -607, -607, -607, 1058, 2222,
946 584, 1442, -607, 1570, 1570, -607, -607, 1698, 1570, 1570,
947 1570, 582, -607, -607, -607, -607, 1442, 587, 589, 590,
948 -607, -607, -607, -607, 642, -607, -607, 1570, -607, -607,
949 -607, 1570, -607, -607
950 };
951
952 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
953 Performed when YYTABLE does not specify something else to do. Zero
954 means the default is an error. */
955
2/6
✓ Branch 0 taken 1041 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1041 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1041 static const yytype_int16 yydefact[] =
956 {
957 5, 0, 2, 1, 0, 0, 0, 0, 0, 0,
958 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,
959 65, 66, 67, 68, 69, 70, 71, 72, 73, 257,
960 0, 0, 274, 3, 8, 0, 0, 6, 7, 4,
961 0, 0, 59, 60, 0, 0, 0, 12, 15, 14,
962 13, 0, 0, 148, 0, 0, 74, 258, 259, 260,
963 261, 273, 0, 108, 0, 41, 274, 63, 0, 0,
964 0, 0, 0, 0, 262, 263, 0, 0, 0, 0,
965 91, 76, 92, 90, 89, 0, 0, 0, 0, 0,
966 0, 17, 18, 19, 9, 77, 79, 81, 93, 0,
967 0, 83, 10, 11, 0, 0, 133, 131, 16, 270,
968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
969 109, 61, 376, 377, 0, 0, 0, 0, 0, 0,
970 0, 0, 0, 0, 0, 0, 374, 367, 365, 366,
971 283, 0, 292, 286, 289, 294, 295, 301, 303, 307,
972 310, 313, 318, 323, 325, 327, 329, 331, 333, 335,
973 337, 352, 354, 0, 284, 375, 368, 369, 370, 256,
974 1066 0, 83, 0, 0, 0, 39, 0, 0, 0, 42,
975
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1066 times.
1066 44, 0, 0, 0, 0, 0, 0, 82, 95, 0,
976 0, 94, 102, 0, 147, 264, 266, 265, 268, 271,
977 267, 272, 269, 75, 0, 0, 111, 0, 0, 0,
978 117, 0, 0, 123, 125, 121, 0, 118, 119, 0,
979 116, 0, 74, 0, 0, 0, 336, 0, 383, 0,
980 1066 296, 297, 299, 300, 298, 0, 0, 0, 0, 290,
981 1066 291, 0, 0, 0, 0, 0, 0, 0, 0, 0,
982 1066 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
983 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
984 1071 0, 0, 0, 0, 0, 0, 0, 0, 373, 0,
985
2/6
✓ Branch 0 taken 1071 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1071 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1071 253, 0, 0, 0, 21, 27, 0, 25, 0, 26,
986 0, 0, 0, 0, 31, 34, 33, 32, 0, 40,
987 0, 57, 154, 0, 0, 0, 0, 0, 0, 0,
988
1/2
✓ Branch 0 taken 1071 times.
✗ Branch 1 not taken.
1071 0, 0, 0, 0, 78, 86, 0, 88, 80, 0,
989 0, 0, 0, 0, 251, 0, 0, 0, 0, 0,
990 0, 0, 0, 0, 174, 0, 196, 0, 200, 0,
991 0, 0, 0, 0, 199, 161, 0, 162, 163, 164,
992 218, 219, 165, 227, 228, 229, 232, 166, 167, 168,
993 0, 0, 0, 283, 353, 0, 0, 0, 0, 99,
994 100, 101, 0, 132, 0, 120, 122, 128, 129, 126,
995 110, 113, 114, 115, 112, 124, 127, 0, 0, 0,
996 285, 0, 381, 0, 0, 279, 0, 282, 0, 288,
997 3 302, 304, 305, 306, 308, 309, 311, 312, 315, 314,
998
2/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3 317, 316, 319, 320, 322, 321, 324, 326, 328, 330,
999 0, 332, 338, 339, 340, 341, 342, 343, 344, 345,
1000 346, 348, 349, 350, 351, 347, 0, 20, 255, 0,
1001
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 62, 0, 22, 23, 24, 36, 37, 28, 29, 30,
1002 35, 0, 0, 0, 150, 151, 149, 0, 55, 56,
1003 53, 54, 51, 52, 49, 50, 47, 48, 45, 46,
1004 0, 85, 0, 193, 0, 0, 201, 0, 250, 0,
1005 170, 0, 172, 0, 0, 155, 0, 0, 202, 0,
1006 383, 159, 176, 157, 156, 226, 195, 198, 197, 0,
1007 169, 175, 158, 160, 0, 107, 103, 97, 102, 0,
1008 0, 135, 0, 139, 0, 0, 0, 141, 0, 138,
1009 0, 0, 371, 372, 277, 0, 382, 0, 0, 283,
1010 34878 287, 0, 280, 293, 0, 254, 0, 58, 152, 153,
1011 0, 87, 96, 189, 191, 178, 177, 0, 181, 182,
1012 183, 184, 185, 186, 187, 188, 194, 179, 273, 180,
1013 0, 0, 0, 274, 0, 0, 0, 0, 0, 0,
1014 34878 0, 0, 171, 173, 0, 0, 0, 0, 0, 231,
1015 0, 98, 106, 0, 144, 145, 142, 140, 134, 137,
1016 18230 136, 143, 0, 278, 0, 0, 281, 334, 0, 43,
1017 18230 190, 192, 0, 239, 240, 0, 0, 230, 0, 0,
1018 18230 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1019 0, 0, 0, 0, 0, 193, 0, 0, 0, 0,
1020 0, 130, 0, 0, 38, 0, 0, 0, 0, 0,
1021 0, 356, 358, 359, 357, 360, 0, 238, 0, 203,
1022 205, 0, 241, 0, 0, 252, 243, 249, 104, 0,
1023 105, 0, 0, 0, 193, 0, 0, 0, 0, 0,
1024 0, 0, 84, 0, 0, 0, 0, 0, 0, 0,
1025 245, 247, 0, 146, 379, 380, 0, 221, 0, 224,
1026 364, 363, 362, 361, 0, 237, 0, 0, 235, 204,
1027 206, 0, 354, 0, 0, 355, 217, 207, 0, 0,
1028 0, 209, 242, 0, 0, 244, 378, 193, 0, 0,
1029 0, 0, 236, 216, 214, 215, 208, 0, 0, 0,
1030 211, 246, 248, 220, 222, 225, 234, 0, 213, 210,
1031 212, 0, 233, 223
1032 };
1033
1034 /* YYPGOTO[NTERM-NUM]. */
1035 static const yytype_int16 yypgoto[] =
1036 {
1037 -607, -607, -607, 377, 16, -607, -279, 46, -607, -607,
1038 -607, -1, 60, 9, -607, -607, 98, 17, 21, -607,
1039 -23, -607, -607, -607, -607, 38, -6, -607, 143, 26,
1040 -607, 27, -607, -607, 20, -607, -607, -123, 445, -607,
1041 -214, 22, 14, 595, -607, -607, -508, 6, 555, 141,
1042 -186, -579, -96, -606, -448, 335, -443, -607, -12, -440,
1043 -607, -607, -607, -436, 331, -607, -607, -607, -529, -429,
1044 -428, -607, -406, -364, 39, -146, 88, -2, -45, -607,
1045 18, -607, 15, 312, -607, -607, 279, -607, 281, -607,
1046 -607, -74, 78, 163, 165, 108, 146, 421, 433, 446,
1047 453, 422, -607, -252, 556, 2290, 362, -362, 66, -22,
1048 -454, -607, -161, -607, -607, -607, -553
1049 };
1050
1051 /* YYDEFGOTO[NTERM-NUM]. */
1052 static const yytype_int16 yydefgoto[] =
1053 {
1054 0, 1, 2, 33, 285, 286, 287, 337, 36, 37,
1055 38, 338, 339, 340, 42, 43, 341, 292, 342, 95,
1056 169, 97, 568, 187, 316, 82, 215, 99, 368, 369,
1057 505, 370, 371, 64, 295, 120, 216, 217, 218, 219,
1058 220, 296, 297, 51, 373, 518, 519, 343, 53, 484,
1059 485, 547, 345, 346, 347, 476, 348, 677, 678, 349,
1060 688, 350, 351, 352, 353, 354, 355, 356, 605, 357,
1061 358, 359, 360, 361, 362, 170, 55, 140, 73, 57,
1062 58, 59, 60, 61, 141, 142, 396, 143, 144, 145,
1063 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
1064 156, 157, 158, 159, 160, 161, 364, 365, 163, 704,
1065 705, 164, 165, 166, 167, 168, 229
1066 };
1067
1068 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1069 positive, shift that token. If negative, reduce the rule whose
1070 number is the opposite. If YYTABLE_NINF, syntax error. */
1071 static const yytype_int16 yytable[] =
1072 {
1073 56, 39, 384, 191, 344, 56, 56, 443, 52, 420,
1074 590, 41, 56, 56, 56, 56, 50, 306, 34, 45,
1075 566, 96, 48, 46, 49, 549, 75, 282, 480, 74,
1076 550, 175, 482, 551, 609, 182, 81, 552, 98, 29,
1077 47, 54, 100, 63, 553, 554, 655, 105, 35, 321,
1078 456, 508, 80, 185, 83, 84, 230, 231, 232, 233,
1079 234, -276, 40, 87, 88, 89, 107, 555, 537, 56,
1080 109, 302, 711, 98, 675, 676, 56, 100, 574, 662,
1081 3, 640, 375, 186, 279, 687, 110, 303, 29, 509,
1082 391, 75, 70, 382, 74, 280, 575, 105, 62, 261,
1083 44, 392, 726, 481, 65, 67, 68, 483, 66, 556,
1084 686, 559, 79, 44, 79, 79, 278, 222, 210, 106,
1085 71, 470, 76, 262, 225, 253, 254, -74, 212, 707,
1086 471, 299, 255, 56, 278, 439, 69, 136, 733, 451,
1087 213, 304, 305, 393, 77, 111, 113, 115, 117, 344,
1088 183, 177, 256, 683, 72, 639, 90, 214, 221, 279,
1089 498, 314, 113, 117, 394, 209, 188, 400, 189, 172,
1090 440, 300, 56, 289, 190, 85, 79, 549, 301, 211,
1091 52, 279, 550, 291, 86, 551, 670, 391, 363, 552,
1092 56, 75, 535, 391, 74, 293, 553, 554, 684, 531,
1093 -133, 376, 237, 222, 716, 100, 532, 238, 239, 240,
1094 91, 531, 294, 298, 222, 381, 549, 44, 593, 555,
1095 288, 550, 616, 637, 551, 212, 81, 92, 552, 617,
1096 390, 668, 696, 235, 290, 553, 554, 213, 669, 697,
1097 -273, 104, -273, 717, 690, -273, 691, 307, 310, 313,
1098 718, 317, 245, 246, 214, 221, 438, 112, 555, 29,
1099 93, 556, 209, 559, 611, 612, 613, 614, 615, 549,
1100 94, 114, 44, 29, 550, 56, 211, 551, 242, 243,
1101 244, 552, 597, 52, 56, 444, 41, 102, 553, 554,
1102 367, 50, 52, 34, 45, 291, 103, 48, 46, 49,
1103 556, 108, 559, 44, 87, 88, 89, 293, 116, 29,
1104 29, 555, 247, 248, 44, 47, 54, 66, 96, 634,
1105 401, 402, 403, 35, 294, 298, 363, 249, 250, 251,
1106 252, 56, 288, 363, 452, 453, 692, 40, 693, 106,
1107 122, 123, 458, 459, 363, 497, 290, 460, 461, 124,
1108 125, 462, 463, 556, 81, 559, 101, 408, 409, 410,
1109 411, 464, 465, 119, 56, 466, 467, 126, 127, 173,
1110 56, 513, 468, 469, 121, 44, 176, 548, 631, 603,
1111 604, 515, 171, 29, 44, 472, 560, 174, 562, 178,
1112 129, 179, 529, 516, 130, 131, 132, 133, 180, 412,
1113 413, 414, 415, 134, 675, 676, 181, 135, 404, 405,
1114 517, 520, 406, 407, 184, 192, 193, 203, 512, 30,
1115 241, 223, 195, 196, 197, 198, 199, 200, 201, 202,
1116 224, 162, 514, -276, 236, -275, 257, 277, 258, 319,
1117 521, 657, 259, 278, 281, 260, 372, 162, 374, 90,
1118 387, 377, 66, 136, 701, 378, 137, 138, 139, 528,
1119 379, 385, 386, 388, 504, 399, 445, 389, 122, 123,
1120 44, 363, 363, 363, 390, 441, 446, 124, 125, 447,
1121 448, 449, 545, 450, 136, 171, 491, 454, 457, 473,
1122 227, 228, 344, 455, 546, 474, 171, 363, 475, 477,
1123 479, 486, 487, 489, 492, 493, 56, 536, 494, 499,
1124 533, 29, 557, 500, 128, 501, 56, 589, 129, 502,
1125 503, 507, 344, 522, 534, 498, 523, 515, 538, 548,
1126 539, 540, 542, 572, 573, 135, 541, -353, 594, 516,
1127 498, 580, 583, 162, 162, 162, 584, 162, 318, 585,
1128 586, 587, 576, 591, 595, 578, 517, 520, 623, 363,
1129 592, 598, 600, 599, 512, 602, 619, 601, 548, 620,
1130 610, 621, 564, 567, 622, 582, 624, 628, 514, 625,
1131 66, 136, 626, 627, 137, 138, 139, 629, 632, 633,
1132 56, 171, 638, 171, 651, 648, 56, 661, 397, 398,
1133 664, 212, 665, 663, 52, 673, 367, 291, 671, 674,
1134 679, 680, 681, 213, 682, 363, 44, 363, 363, 293,
1135 363, 548, 706, 363, 363, 363, 509, 56, 713, 714,
1136 214, 221, 719, 720, 545, 723, 294, 298, 209, 724,
1137 579, 725, 730, 737, 288, 738, 546, 739, 740, 630,
1138 741, 581, 211, 171, 437, 659, 660, 118, 290, 56,
1139 194, 383, 363, 363, 557, 708, 488, 363, 525, 363,
1140 515, 363, 363, 545, 495, 530, 363, 363, 416, 506,
1141 363, 162, 516, 226, 421, 546, 478, 729, 0, 0,
1142 44, 417, 0, 0, 0, 363, 44, 490, 0, 517,
1143 520, 0, 607, 557, 0, 418, 363, 512, 0, 363,
1144 497, 363, 363, 419, 0, 363, 363, 363, 363, 0,
1145 0, 514, 0, 0, 363, 497, 545, 367, 0, 0,
1146 0, 0, 0, 0, 0, 363, 162, 0, 546, 363,
1147 0, 703, 0, 0, 0, 0, 0, 0, 0, 0,
1148 0, 397, 0, 526, 0, 162, 557, 0, 647, 44,
1149 649, 650, 7, 652, 8, 510, 0, 656, 0, 10,
1150 0, 12, 0, 0, 0, 728, 0, 0, 0, 0,
1151 14, 15, 16, 17, 0, 558, 18, 19, 20, 21,
1152 22, 23, 24, 25, 26, 27, 28, 0, 0, 0,
1153 29, 0, 0, 162, 0, 0, 689, 0, 511, 0,
1154 695, 0, 698, 0, 699, 700, 0, 0, 0, 0,
1155 712, 0, 0, 715, 0, 0, 0, 0, 0, 0,
1156 0, 0, 162, 0, 0, 0, 565, 569, 722, 570,
1157 0, 571, 0, 0, 0, 0, 0, 0, 162, 577,
1158 0, 162, 0, 0, 731, 732, 0, 0, 0, 734,
1159 735, 736, 0, 0, 208, 4, 5, 0, 0, 66,
1160 0, 162, 0, 0, 0, 6, 0, 0, 742, 618,
1161 0, 7, 743, 8, 9, 0, 0, 0, 10, 11,
1162 12, 13, 0, 596, 0, 0, 0, 0, 0, 14,
1163 15, 16, 17, 0, 7, 18, 19, 20, 21, 22,
1164 23, 24, 25, 26, 27, 28, 0, 0, 0, 29,
1165 0, 7, 606, 0, 608, 0, 0, 0, 0, 19,
1166 20, 21, 22, 23, 24, 25, 26, 27, 28, 0,
1167 658, 0, 29, 0, 0, 162, 19, 20, 21, 22,
1168 23, 24, 25, 26, 27, 28, 0, 0, 0, 29,
1169 0, 0, 0, 0, 635, 0, 0, 636, 0, 0,
1170 0, 565, 0, 641, 642, 643, 644, 645, 646, 0,
1171 30, 0, 0, 31, 0, 653, 654, 0, 32, 0,
1172 0, 366, 0, 0, 228, 0, 0, 0, 0, 666,
1173 667, 0, 565, 0, 0, 0, 0, 0, 0, 0,
1174 672, 66, 0, 0, 7, 0, 8, 204, 0, 0,
1175 0, 10, 0, 12, 0, 228, 0, 0, 66, 0,
1176 694, 0, 14, 205, 16, 17, 0, 702, 18, 19,
1177 20, 21, 22, 23, 24, 25, 26, 27, 28, 0,
1178 0, 0, 29, 0, 0, 0, 0, 0, 721, 0,
1179 206, 0, 0, 320, 321, 322, 207, 323, 709, 710,
1180 324, 702, 122, 123, 325, 326, 327, 7, 328, 8,
1181 329, 124, 125, 0, 10, 0, 12, 0, 0, 0,
1182 0, 0, 330, 331, 332, 0, 333, 0, 0, 126,
1183 127, 18, 19, 20, 21, 22, 23, 24, 25, 26,
1184 27, 28, 0, 0, 334, 29, 208, 0, 128, 0,
1185 0, 66, 335, 0, 0, 0, 130, 131, 132, 133,
1186 0, 0, 0, 0, 7, 134, 8, 204, 0, 135,
1187 0, 10, 0, 12, 0, 0, 0, 0, 0, 0,
1188 0, 0, 14, 15, 16, 17, 0, 0, 18, 19,
1189 20, 21, 22, 23, 24, 25, 26, 27, 28, 0,
1190 0, 0, 29, 0, 0, 0, 30, 0, 0, 208,
1191 0, 0, 0, 0, 66, 136, 0, 0, 137, 138,
1192 139, 320, 321, 322, 0, 323, 0, 0, 324, 0,
1193 122, 123, 325, 326, 327, 7, 328, 8, 329, 124,
1194 125, 0, 10, 0, 12, 0, 0, 0, 0, 0,
1195 330, 331, 332, 0, 333, 0, 0, 126, 127, 18,
1196 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1197 0, 66, 334, 29, 0, 0, 128, 0, 0, 0,
1198 335, 336, 0, 0, 130, 131, 132, 133, 0, 0,
1199 0, 0, 7, 134, 8, 510, 0, 135, 0, 10,
1200 0, 12, 0, 0, 0, 0, 0, 0, 0, 0,
1201 14, 15, 16, 17, 0, 0, 18, 19, 20, 21,
1202 22, 23, 24, 25, 26, 27, 28, 0, 0, 0,
1203 29, 0, 0, 0, 30, 0, 0, 208, 0, 0,
1204 0, 0, 66, 136, 0, 0, 137, 138, 139, 320,
1205 321, 322, 0, 323, 0, 0, 324, 0, 122, 123,
1206 325, 326, 327, 7, 328, 8, 329, 124, 125, 0,
1207 10, 0, 12, 0, 0, 0, 0, 0, 330, 331,
1208 332, 0, 333, 0, 0, 126, 127, 18, 19, 20,
1209 21, 22, 23, 24, 25, 26, 27, 28, 0, 66,
1210 334, 29, 0, 0, 128, 0, 0, 0, 335, 496,
1211 0, 0, 130, 131, 132, 133, 0, 0, 0, 7,
1212 0, 134, 0, 0, 0, 135, 0, 0, 0, 0,
1213 0, 0, 0, 0, 0, 0, 0, 14, 78, 16,
1214 17, 0, 0, 0, 19, 20, 21, 22, 23, 24,
1215 25, 26, 27, 28, 0, 0, 0, 29, 0, 0,
1216 0, 0, 30, 0, 0, 208, 0, 0, 0, 0,
1217 66, 136, 0, 0, 137, 138, 139, 320, 321, 322,
1218 0, 323, 0, 0, 324, 0, 122, 123, 325, 326,
1219 327, 7, 328, 8, 329, 124, 125, 0, 10, 0,
1220 12, 0, 0, 0, 0, 0, 330, 331, 332, 0,
1221 333, 0, 0, 126, 127, 18, 19, 20, 21, 22,
1222 23, 24, 25, 26, 27, 28, 66, 0, 334, 29,
1223 0, 0, 128, 0, 0, 0, 335, 0, 0, 0,
1224 130, 131, 132, 133, 0, 0, 0, 7, 0, 134,
1225 0, 0, 0, 135, 0, 0, 0, 0, 0, 0,
1226 0, 0, 0, 0, 0, 14, 15, 16, 17, 0,
1227 0, 0, 19, 20, 21, 22, 23, 24, 25, 26,
1228 27, 28, 0, 0, 0, 29, 0, 0, 0, 0,
1229 30, 0, 0, 208, 0, 0, 0, 0, 66, 136,
1230 0, 0, 137, 138, 139, 320, 321, 322, 0, 323,
1231 0, 0, 324, 0, 122, 123, 325, 326, 327, 7,
1232 328, 8, 329, 124, 125, 0, 10, 0, 12, 0,
1233 0, 0, 0, 0, 330, 331, 332, 0, 333, 0,
1234 0, 126, 127, 18, 19, 20, 21, 22, 23, 24,
1235 28 25, 26, 27, 28, 66, 0, 334, 29, 0, 0,
1236 28 128, 0, 0, 0, 335, 0, 0, 0, 130, 131,
1237 28 132, 133, 0, 0, 0, 0, 0, 134, 0, 0,
1238 28 0, 135, 7, 0, 8, 510, 0, 0, 0, 10,
1239 28 0, 12, 0, 0, 0, 0, 0, 0, 0, 0,
1240 28 14, 15, 16, 17, 0, 0, 18, 19, 20, 21,
1241 28 22, 23, 24, 25, 26, 27, 28, 0, 30, 0,
1242 28 29, 0, 0, 0, 0, 0, 66, 136, 588, 0,
1243 137, 138, 139, 320, 321, 322, 0, 323, 0, 0,
1244 324, 0, 122, 123, 325, 543, 544, 7, 328, 8,
1245 329, 124, 125, 0, 10, 0, 0, 0, 0, 0,
1246 0, 0, 330, 331, 0, 0, 333, 0, 0, 126,
1247 127, 0, 19, 20, 21, 22, 23, 24, 25, 26,
1248 54 27, 28, 0, 0, 208, 29, 0, 0, 128, 66,
1249
3/8
✓ Branch 0 taken 54 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 54 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 54 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
54 0, 0, 335, 0, 4, 5, 130, 131, 132, 133,
1250 0, 0, 0, 0, 6, 134, 0, 0, 0, 135,
1251 7, 0, 8, 9, 0, 0, 0, 10, 11, 12,
1252 13, 0, 0, 0, 0, 0, 0, 0, 14, 15,
1253 16, 17, 0, 0, 18, 19, 20, 21, 22, 23,
1254 27 24, 25, 26, 27, 28, 0, 30, 0, 29, 4,
1255
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 5, 0, 0, 0, 66, 136, 0, 0, 137, 138,
1256 139, 0, 0, 0, 0, 7, 0, 8, 283, 0,
1257 0, 0, 10, 11, 12, 0, 0, 0, 0, 0,
1258 0, 0, 0, 14, 15, 16, 17, 0, 0, 18,
1259 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1260 26 4, 5, 0, 29, 0, 0, 0, 0, 0, 30,
1261 26 0, 284, 436, 0, 0, 0, 7, 32, 8, 283,
1262 26 0, 0, 0, 10, 11, 12, 0, 0, 0, 0,
1263 26 0, 0, 0, 0, 14, 15, 16, 17, 0, 0,
1264 26 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1265 28, 0, 4, 5, 29, 0, 0, 0, 0, 0,
1266 0, 0, 442, 0, 30, 0, 0, 208, 7, 0,
1267 8, 283, 32, 0, 0, 10, 11, 12, 308, 0,
1268 0, 122, 123, 0, 0, 0, 14, 15, 16, 17,
1269 124, 125, 18, 19, 20, 21, 22, 23, 24, 25,
1270 26, 27, 28, 0, 0, 0, 29, 0, 126, 127,
1271 0, 0, 0, 0, 0, 30, 0, 0, 208, 0,
1272 0, 0, 0, 32, 29, 0, 0, 128, 0, 0,
1273 311, 129, 0, 122, 123, 130, 131, 132, 133, 0,
1274 0, 0, 124, 125, 134, 0, 0, 0, 135, 0,
1275 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1276
2/6
✓ Branch 0 taken 27 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 27 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
27 126, 127, 0, 0, 0, 0, 0, 30, 0, 0,
1277 0, 0, 0, 0, 0, 32, 29, 0, 0, 128,
1278 0, 0, 0, 129, 0, 0, 7, 130, 131, 132,
1279 133, 0, 309, 66, 136, 0, 134, 137, 138, 139,
1280 135, 0, 0, 0, 14, 205, 16, 17, 0, 0,
1281 0, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1282 28, 0, 0, 0, 29, 122, 123, 0, 0, 0,
1283 7, 0, 0, 0, 124, 125, 0, 0, 0, 0,
1284 0, 0, 0, 0, 312, 66, 136, 0, 0, 137,
1285 138, 139, 126, 127, 0, 19, 20, 21, 22, 23,
1286 24, 25, 26, 27, 28, 0, 0, 0, 29, 0,
1287 0, 560, 561, 562, 0, 129, 0, 7, 0, 130,
1288 4 131, 132, 133, 0, 0, 0, 0, 0, 134, 0,
1289 49 122, 123, 135, 66, 0, 7, 333, 0, 0, 124,
1290 125, 0, 19, 20, 21, 22, 23, 24, 25, 26,
1291 27, 28, 0, 0, 0, 29, 0, 126, 127, 0,
1292 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1293 0, 0, 0, 29, 0, 0, 128, 563, 136, 0,
1294 129, 137, 138, 139, 130, 131, 132, 133, 0, 0,
1295 0, 0, 0, 134, 0, 0, 0, 135, 0, 0,
1296 0, 0, 0, 0, 0, 0, 122, 123, 0, 0,
1297 0, 0, 0, 0, 0, 124, 125, 0, 0, 0,
1298 0, 0, 0, 0, 66, 0, 0, 0, 0, 0,
1299 0, 122, 123, 126, 127, 0, 0, 0, 0, 0,
1300 124, 125, 66, 136, 0, 0, 137, 138, 139, 29,
1301 0, 0, 560, 0, 562, 0, 129, 0, 126, 127,
1302 130, 131, 132, 133, 0, 0, 0, 0, 0, 134,
1303 0, 0, 0, 135, 29, 0, 0, 128, 0, 0,
1304 315, 129, 0, 122, 123, 130, 131, 132, 133, 0,
1305 0, 0, 124, 125, 134, 0, 0, 0, 135, 0,
1306 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1307 126, 127, 0, 0, 0, 0, 0, 0, 66, 136,
1308 727, 0, 137, 138, 139, 0, 29, 0, 0, 128,
1309 395, 0, 0, 129, 0, 0, 0, 130, 131, 132,
1310 133, 0, 0, 66, 136, 0, 134, 137, 138, 139,
1311 135, 0, 0, 0, 0, 0, 0, 0, 0, 122,
1312 123, 0, 0, 0, 0, 0, 0, 0, 124, 125,
1313 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
1314 273, 274, 275, 0, 122, 123, 126, 127, 0, 0,
1315 0, 0, 276, 124, 125, 66, 136, 0, 0, 137,
1316 138, 139, 29, 0, 0, 128, 524, 0, 0, 129,
1317 0, 126, 127, 130, 131, 132, 133, 0, 0, 0,
1318 0, 0, 134, 0, 0, 0, 135, 29, 0, 0,
1319 128, 0, 0, 527, 129, 0, 122, 123, 130, 131,
1320 132, 133, 0, 0, 0, 124, 125, 134, 0, 0,
1321 0, 135, 0, 0, 0, 0, 0, 0, 0, 0,
1322 0, 0, 0, 126, 127, 0, 0, 0, 0, 0,
1323 0, 66, 136, 0, 0, 137, 138, 139, 0, 29,
1324 0, 0, 560, 0, 562, 0, 129, 0, 0, 0,
1325 130, 131, 132, 133, 0, 0, 66, 136, 0, 134,
1326 137, 138, 139, 135, 0, 0, 0, 0, 0, 0,
1327 0, 0, 122, 123, 0, 0, 0, 0, 0, 0,
1328 0, 124, 125, 422, 423, 424, 425, 426, 427, 428,
1329 429, 430, 431, 432, 433, 434, 435, 122, 123, 126,
1330 127, 0, 0, 0, 0, 0, 124, 125, 66, 136,
1331 0, 0, 137, 138, 139, 29, 0, 0, 128, 0,
1332 0, 0, 129, 685, 126, 127, 130, 131, 132, 133,
1333 0, 0, 0, 0, 0, 134, 0, 0, 0, 135,
1334 29, 0, 0, 128, 0, 0, 0, 129, 0, 122,
1335 123, 130, 131, 132, 133, 0, 0, 0, 124, 125,
1336 134, 0, 0, 0, 135, 0, 0, 0, 0, 0,
1337 0, 0, 0, 0, 0, 0, 126, 0, 0, 0,
1338 0, 0, 0, 0, 66, 136, 0, 0, 137, 138,
1339 139, 0, 29, 0, 0, 128, 0, 0, 0, 129,
1340 0, 0, 0, 130, 131, 132, 133, 0, 0, 66,
1341 136, 0, 134, 137, 138, 139, 135, 7, 0, 8,
1342 204, 0, 0, 0, 10, 0, 12, 0, 0, 0,
1343 0, 0, 0, 0, 0, 14, 205, 16, 17, 0,
1344 0, 18, 19, 20, 21, 22, 23, 24, 25, 26,
1345 27, 28, 0, 0, 0, 29, 0, 0, 0, 0,
1346 0, 66, 136, 380, 0, 137, 138, 139, 0, 207,
1347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1348 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1349 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1350 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1351 14561 0, 0, 0, 0, 0, 0, 0, 0, 0, 208,
1352
3/4
✓ Branch 0 taken 14561 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4478 times.
✓ Branch 3 taken 10083 times.
14561 0, 0, 0, 0, 66
1353 };
1354 4478
1355 4478 static const yytype_int16 yycheck[] =
1356 {
1357 2, 2, 216, 99, 190, 7, 8, 286, 2, 261,
1358
2/6
✓ Branch 0 taken 10083 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10083 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
10083 518, 2, 14, 15, 16, 17, 2, 178, 2, 2,
1359 474, 44, 2, 2, 2, 473, 11, 173, 56, 11,
1360 473, 76, 56, 473, 563, 11, 15, 473, 44, 57,
1361 2, 2, 44, 126, 473, 473, 625, 54, 2, 6,
1362 61, 54, 14, 62, 16, 17, 130, 131, 132, 133,
1363 134, 60, 2, 31, 32, 33, 52, 473, 61, 71,
1364 55, 61, 678, 79, 10, 11, 78, 79, 16, 632,
1365 0, 610, 205, 92, 54, 664, 55, 77, 57, 92,
1366 54, 76, 64, 216, 76, 65, 34, 54, 21, 66,
1367 7026 2, 65, 708, 131, 129, 7, 8, 131, 126, 473,
1368 663, 473, 14, 15, 16, 17, 127, 119, 119, 126,
1369 13 92, 54, 27, 90, 126, 84, 85, 126, 119, 65,
1370 63, 176, 91, 135, 127, 281, 60, 127, 717, 300,
1371 119, 131, 132, 62, 28, 57, 58, 59, 60, 335,
1372 21900 126, 85, 111, 661, 126, 609, 124, 119, 119, 54,
1373 5371 346, 184, 74, 75, 83, 119, 56, 241, 58, 71,
1374 9499 65, 54, 174, 174, 64, 60, 78, 625, 61, 119,
1375 817 174, 54, 625, 174, 126, 625, 640, 54, 190, 625,
1376 2233 192, 176, 65, 54, 176, 174, 625, 625, 65, 54,
1377 3, 207, 62, 205, 65, 207, 61, 67, 68, 69,
1378 57 56, 54, 174, 174, 216, 216, 664, 119, 61, 625,
1379 5 174, 664, 54, 54, 664, 216, 205, 56, 664, 61,
1380 61, 54, 54, 135, 174, 664, 664, 216, 61, 61,
1381 21824 55, 3, 57, 54, 61, 60, 63, 181, 182, 183,
1382
2/6
✓ Branch 0 taken 3015 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3015 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3015 61, 185, 76, 77, 216, 216, 279, 55, 664, 57,
1383 56, 625, 216, 625, 106, 107, 108, 109, 110, 717,
1384 56, 55, 174, 57, 717, 277, 216, 717, 73, 74,
1385 75, 717, 534, 277, 286, 286, 277, 56, 717, 717,
1386 192, 277, 286, 277, 277, 286, 56, 277, 277, 277,
1387 664, 56, 664, 205, 31, 32, 33, 286, 55, 57,
1388
2/6
✓ Branch 0 taken 213 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 213 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
213 57, 717, 78, 79, 216, 277, 277, 126, 341, 598,
1389 242, 243, 244, 277, 286, 286, 328, 80, 81, 82,
1390 83, 333, 286, 335, 131, 132, 61, 277, 63, 126,
1391 14, 15, 122, 123, 346, 346, 286, 122, 123, 23,
1392 24, 122, 123, 717, 333, 717, 44, 249, 250, 251,
1393 252, 122, 123, 64, 366, 122, 123, 41, 42, 64,
1394
2/6
✓ Branch 0 taken 122 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 122 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
122 372, 372, 122, 123, 126, 277, 27, 473, 592, 58,
1395 59, 372, 70, 57, 286, 319, 60, 64, 62, 60,
1396 64, 129, 394, 372, 68, 69, 70, 71, 129, 253,
1397 254, 255, 256, 77, 10, 11, 60, 81, 245, 246,
1398 372, 372, 247, 248, 54, 60, 126, 126, 372, 118,
1399 72, 60, 110, 111, 112, 113, 114, 115, 116, 117,
1400 60, 69, 372, 60, 60, 60, 86, 61, 87, 11,
1401 1963 374, 627, 88, 127, 64, 89, 64, 85, 60, 124,
1402 126, 56, 126, 127, 128, 56, 130, 131, 132, 393,
1403 56, 56, 56, 129, 366, 126, 56, 60, 14, 15,
1404 372, 473, 474, 475, 61, 60, 56, 23, 24, 56,
1405 2385 56, 56, 473, 56, 127, 173, 56, 61, 54, 60,
1406 128, 129, 678, 61, 473, 60, 184, 499, 60, 60,
1407 60, 60, 60, 60, 56, 56, 508, 441, 56, 8,
1408 63, 57, 473, 56, 60, 56, 518, 518, 64, 56,
1409 56, 61, 708, 61, 58, 711, 61, 518, 61, 625,
1410 61, 129, 56, 56, 56, 81, 470, 56, 83, 518,
1411 726, 62, 60, 181, 182, 183, 56, 185, 186, 56,
1412 56, 56, 486, 56, 63, 489, 518, 518, 60, 561,
1413 61, 61, 131, 61, 518, 56, 61, 131, 664, 61,
1414 126, 61, 474, 475, 61, 509, 60, 63, 518, 61,
1415 126, 127, 61, 61, 130, 131, 132, 54, 64, 83,
1416 592, 279, 54, 281, 64, 92, 598, 61, 236, 237,
1417 56, 592, 61, 64, 598, 8, 508, 598, 61, 8,
1418 8, 61, 61, 592, 8, 617, 518, 619, 620, 598,
1419 622, 717, 58, 625, 626, 627, 92, 629, 8, 8,
1420 592, 592, 8, 61, 625, 58, 598, 598, 592, 58,
1421 499, 58, 58, 61, 598, 58, 625, 58, 58, 583,
1422 8, 508, 592, 341, 277, 629, 629, 62, 598, 661,
1423 105, 216, 664, 665, 625, 677, 331, 669, 389, 671,
1424 661, 673, 674, 664, 343, 394, 678, 679, 257, 367,
1425 682, 319, 661, 127, 262, 664, 324, 709, -1, -1,
1426
2/6
✓ Branch 0 taken 116 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 116 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
116 592, 258, -1, -1, -1, 697, 598, 335, -1, 661,
1427 661, -1, 561, 664, -1, 259, 708, 661, -1, 711,
1428 711, 713, 714, 260, -1, 717, 718, 719, 720, -1,
1429 -1, 661, -1, -1, 726, 726, 717, 629, -1, -1,
1430 -1, -1, -1, -1, -1, 737, 374, -1, 717, 741,
1431 18954 -1, 675, -1, -1, -1, -1, -1, -1, -1, -1,
1432
2/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
8 -1, 389, -1, 391, -1, 393, 717, -1, 617, 661,
1433 619, 620, 19, 622, 21, 22, -1, 626, -1, 26,
1434 -1, 28, -1, -1, -1, 709, -1, -1, -1, -1,
1435 37, 38, 39, 40, -1, 473, 43, 44, 45, 46,
1436 47, 48, 49, 50, 51, 52, 53, -1, -1, -1,
1437 28914 57, -1, -1, 441, -1, -1, 665, -1, 65, -1,
1438 28914 669, -1, 671, -1, 673, 674, -1, -1, -1, -1,
1439 28914 679, -1, -1, 682, -1, -1, -1, -1, -1, -1,
1440 28914 -1, -1, 470, -1, -1, -1, 474, 475, 697, 477,
1441 -1, 479, -1, -1, -1, -1, -1, -1, 486, 487,
1442 -1, 489, -1, -1, 713, 714, -1, -1, -1, 718,
1443 719, 720, -1, -1, 121, 3, 4, -1, -1, 126,
1444 -1, 509, -1, -1, -1, 13, -1, -1, 737, 567,
1445 -1, 19, 741, 21, 22, -1, -1, -1, 26, 27,
1446 28, 29, -1, 531, -1, -1, -1, -1, -1, 37,
1447 38, 39, 40, -1, 19, 43, 44, 45, 46, 47,
1448 48, 49, 50, 51, 52, 53, -1, -1, -1, 57,
1449 28620 -1, 19, 560, -1, 562, -1, -1, -1, -1, 44,
1450
2/6
✓ Branch 0 taken 28620 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 28620 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
28620 45, 46, 47, 48, 49, 50, 51, 52, 53, -1,
1451 628, -1, 57, -1, -1, 583, 44, 45, 46, 47,
1452 48, 49, 50, 51, 52, 53, -1, -1, -1, 57,
1453 -1, -1, -1, -1, 602, -1, -1, 605, -1, -1,
1454 -1, 609, -1, 611, 612, 613, 614, 615, 616, -1,
1455 118, -1, -1, 121, -1, 623, 624, -1, 126, -1,
1456 -1, 106, -1, -1, 632, -1, -1, -1, -1, 637,
1457 638, -1, 640, -1, -1, -1, -1, -1, -1, -1,
1458 648, 126, -1, -1, 19, -1, 21, 22, -1, -1,
1459 -1, 26, -1, 28, -1, 663, -1, -1, 126, -1,
1460 668, -1, 37, 38, 39, 40, -1, 675, 43, 44,
1461 8797 45, 46, 47, 48, 49, 50, 51, 52, 53, -1,
1462 -1, -1, 57, -1, -1, -1, -1, -1, 696, -1,
1463 702 65, -1, -1, 5, 6, 7, 71, 9, 10, 11,
1464 702 12, 709, 14, 15, 16, 17, 18, 19, 20, 21,
1465 702 22, 23, 24, -1, 26, -1, 28, -1, -1, -1,
1466 -1, -1, 34, 35, 36, -1, 38, -1, -1, 41,
1467 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
1468 52, 53, -1, -1, 56, 57, 121, -1, 60, -1,
1469 -1, 126, 64, -1, -1, -1, 68, 69, 70, 71,
1470 -1, -1, -1, -1, 19, 77, 21, 22, -1, 81,
1471 -1, 26, -1, 28, -1, -1, -1, -1, -1, -1,
1472 -1, -1, 37, 38, 39, 40, -1, -1, 43, 44,
1473 45, 46, 47, 48, 49, 50, 51, 52, 53, -1,
1474 -1, -1, 57, -1, -1, -1, 118, -1, -1, 121,
1475 -1, -1, -1, -1, 126, 127, -1, -1, 130, 131,
1476 132, 5, 6, 7, -1, 9, -1, -1, 12, -1,
1477 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
1478 24, -1, 26, -1, 28, -1, -1, -1, -1, -1,
1479 34, 35, 36, -1, 38, -1, -1, 41, 42, 43,
1480 6732 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
1481 6732 -1, 126, 56, 57, -1, -1, 60, -1, -1, -1,
1482
2/6
✓ Branch 0 taken 6732 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6732 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6732 64, 65, -1, -1, 68, 69, 70, 71, -1, -1,
1483 -1, -1, 19, 77, 21, 22, -1, 81, -1, 26,
1484 2767 -1, 28, -1, -1, -1, -1, -1, -1, -1, -1,
1485 2767 37, 38, 39, 40, -1, -1, 43, 44, 45, 46,
1486 2767 47, 48, 49, 50, 51, 52, 53, -1, -1, -1,
1487
2/6
✓ Branch 0 taken 2767 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2767 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2767 57, -1, -1, -1, 118, -1, -1, 121, -1, -1,
1488 -1, -1, 126, 127, -1, -1, 130, 131, 132, 5,
1489 6, 7, -1, 9, -1, -1, 12, -1, 14, 15,
1490 16, 17, 18, 19, 20, 21, 22, 23, 24, -1,
1491 26, -1, 28, -1, -1, -1, -1, -1, 34, 35,
1492 817 36, -1, 38, -1, -1, 41, 42, 43, 44, 45,
1493 817 46, 47, 48, 49, 50, 51, 52, 53, -1, 126,
1494 817 56, 57, -1, -1, 60, -1, -1, -1, 64, 65,
1495 817 -1, -1, 68, 69, 70, 71, -1, -1, -1, 19,
1496 -1, 77, -1, -1, -1, 81, -1, -1, -1, -1,
1497 -1, -1, -1, -1, -1, -1, -1, 37, 38, 39,
1498 40, -1, -1, -1, 44, 45, 46, 47, 48, 49,
1499 8849 50, 51, 52, 53, -1, -1, -1, 57, -1, -1,
1500 8849 -1, -1, 118, -1, -1, 121, -1, -1, -1, -1,
1501 8849 126, 127, -1, -1, 130, 131, 132, 5, 6, 7,
1502 8849 -1, 9, -1, -1, 12, -1, 14, 15, 16, 17,
1503 8849 18, 19, 20, 21, 22, 23, 24, -1, 26, -1,
1504 8849 28, -1, -1, -1, -1, -1, 34, 35, 36, -1,
1505 38, -1, -1, 41, 42, 43, 44, 45, 46, 47,
1506
2/6
✓ Branch 0 taken 817 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 817 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
817 48, 49, 50, 51, 52, 53, 126, -1, 56, 57,
1507 -1, -1, 60, -1, -1, -1, 64, -1, -1, -1,
1508 68, 69, 70, 71, -1, -1, -1, 19, -1, 77,
1509 -1, -1, -1, 81, -1, -1, -1, -1, -1, -1,
1510 -1, -1, -1, -1, -1, 37, 38, 39, 40, -1,
1511 -1, -1, 44, 45, 46, 47, 48, 49, 50, 51,
1512 52, 53, -1, -1, -1, 57, -1, -1, -1, -1,
1513 118, -1, -1, 121, -1, -1, -1, -1, 126, 127,
1514 -1, -1, 130, 131, 132, 5, 6, 7, -1, 9,
1515 -1, -1, 12, -1, 14, 15, 16, 17, 18, 19,
1516 525 20, 21, 22, 23, 24, -1, 26, -1, 28, -1,
1517 525 -1, -1, -1, -1, 34, 35, 36, -1, 38, -1,
1518 525 -1, 41, 42, 43, 44, 45, 46, 47, 48, 49,
1519 525 50, 51, 52, 53, 126, -1, 56, 57, -1, -1,
1520 60, -1, -1, -1, 64, -1, -1, -1, 68, 69,
1521 27 70, 71, -1, -1, -1, -1, -1, 77, -1, -1,
1522 27 -1, 81, 19, -1, 21, 22, -1, -1, -1, 26,
1523 27 -1, 28, -1, -1, -1, -1, -1, -1, -1, -1,
1524 37, 38, 39, 40, -1, -1, 43, 44, 45, 46,
1525 13 47, 48, 49, 50, 51, 52, 53, -1, 118, -1,
1526 13 57, -1, -1, -1, -1, -1, 126, 127, 65, -1,
1527 13 130, 131, 132, 5, 6, 7, -1, 9, -1, -1,
1528 13 12, -1, 14, 15, 16, 17, 18, 19, 20, 21,
1529 22, 23, 24, -1, 26, -1, -1, -1, -1, -1,
1530 -1, -1, 34, 35, -1, -1, 38, -1, -1, 41,
1531 42, -1, 44, 45, 46, 47, 48, 49, 50, 51,
1532 52, 53, -1, -1, 121, 57, -1, -1, 60, 126,
1533 -1, -1, 64, -1, 3, 4, 68, 69, 70, 71,
1534 -1, -1, -1, -1, 13, 77, -1, -1, -1, 81,
1535 19, -1, 21, 22, -1, -1, -1, 26, 27, 28,
1536 29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
1537
2/6
✓ Branch 0 taken 9020 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9020 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
9020 39, 40, -1, -1, 43, 44, 45, 46, 47, 48,
1538 49, 50, 51, 52, 53, -1, 118, -1, 57, 3,
1539 4, -1, -1, -1, 126, 127, -1, -1, 130, 131,
1540 132, -1, -1, -1, -1, 19, -1, 21, 22, -1,
1541 -1, -1, 26, 27, 28, -1, -1, -1, -1, -1,
1542
2/6
✓ Branch 0 taken 26 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 26 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
26 -1, -1, -1, 37, 38, 39, 40, -1, -1, 43,
1543 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
1544 3, 4, -1, 57, -1, -1, -1, -1, -1, 118,
1545 -1, 65, 121, -1, -1, -1, 19, 126, 21, 22,
1546 -1, -1, -1, 26, 27, 28, -1, -1, -1, -1,
1547 -1, -1, -1, -1, 37, 38, 39, 40, -1, -1,
1548 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
1549 53, -1, 3, 4, 57, -1, -1, -1, -1, -1,
1550 -1, -1, 65, -1, 118, -1, -1, 121, 19, -1,
1551 21, 22, 126, -1, -1, 26, 27, 28, 11, -1,
1552 -1, 14, 15, -1, -1, -1, 37, 38, 39, 40,
1553 23, 24, 43, 44, 45, 46, 47, 48, 49, 50,
1554
2/6
✓ Branch 0 taken 620 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 620 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
620 51, 52, 53, -1, -1, -1, 57, -1, 41, 42,
1555 -1, -1, -1, -1, -1, 118, -1, -1, 121, -1,
1556 -1, -1, -1, 126, 57, -1, -1, 60, -1, -1,
1557 11, 64, -1, 14, 15, 68, 69, 70, 71, -1,
1558 -1, -1, 23, 24, 77, -1, -1, -1, 81, -1,
1559 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1560 2232 41, 42, -1, -1, -1, -1, -1, 118, -1, -1,
1561 1 -1, -1, -1, -1, -1, 126, 57, -1, -1, 60,
1562 -1, -1, -1, 64, -1, -1, 19, 68, 69, 70,
1563 71, -1, 125, 126, 127, -1, 77, 130, 131, 132,
1564 81, -1, -1, -1, 37, 38, 39, 40, -1, -1,
1565 -1, 44, 45, 46, 47, 48, 49, 50, 51, 52,
1566 53, -1, -1, -1, 57, 14, 15, -1, -1, -1,
1567 19, -1, -1, -1, 23, 24, -1, -1, -1, -1,
1568 -1, -1, -1, -1, 125, 126, 127, -1, -1, 130,
1569 131, 132, 41, 42, -1, 44, 45, 46, 47, 48,
1570 49, 50, 51, 52, 53, -1, -1, -1, 57, -1,
1571
1/2
✓ Branch 0 taken 2232 times.
✗ Branch 1 not taken.
2232 -1, 60, 61, 62, -1, 64, -1, 19, -1, 68,
1572 69, 70, 71, -1, -1, -1, -1, -1, 77, -1,
1573 14, 15, 81, 126, -1, 19, 38, -1, -1, 23,
1574 24, -1, 44, 45, 46, 47, 48, 49, 50, 51,
1575 52, 53, -1, -1, -1, 57, -1, 41, 42, -1,
1576 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
1577 -1, -1, -1, 57, -1, -1, 60, 126, 127, -1,
1578 64, 130, 131, 132, 68, 69, 70, 71, -1, -1,
1579 -1, -1, -1, 77, -1, -1, -1, 81, -1, -1,
1580 -1, -1, -1, -1, -1, -1, 14, 15, -1, -1,
1581 -1, -1, -1, -1, -1, 23, 24, -1, -1, -1,
1582 -1, -1, -1, -1, 126, -1, -1, -1, -1, -1,
1583 -1, 14, 15, 41, 42, -1, -1, -1, -1, -1,
1584 2232 23, 24, 126, 127, -1, -1, 130, 131, 132, 57,
1585 2232 -1, -1, 60, -1, 62, -1, 64, -1, 41, 42,
1586 2232 68, 69, 70, 71, -1, -1, -1, -1, -1, 77,
1587 2232 -1, -1, -1, 81, 57, -1, -1, 60, -1, -1,
1588
2/6
✓ Branch 0 taken 2232 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2232 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2232 63, 64, -1, 14, 15, 68, 69, 70, 71, -1,
1589 -1, -1, 23, 24, 77, -1, -1, -1, 81, -1,
1590 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1591 41, 42, -1, -1, -1, -1, -1, -1, 126, 127,
1592 128, -1, 130, 131, 132, -1, 57, -1, -1, 60,
1593 61, -1, -1, 64, -1, -1, -1, 68, 69, 70,
1594 71, -1, -1, 126, 127, -1, 77, 130, 131, 132,
1595 81, -1, -1, -1, -1, -1, -1, -1, -1, 14,
1596 15, -1, -1, -1, -1, -1, -1, -1, 23, 24,
1597 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
1598 102, 103, 104, -1, 14, 15, 41, 42, -1, -1,
1599 -1, -1, 114, 23, 24, 126, 127, -1, -1, 130,
1600 131, 132, 57, -1, -1, 60, 61, -1, -1, 64,
1601 -1, 41, 42, 68, 69, 70, 71, -1, -1, -1,
1602 -1, -1, 77, -1, -1, -1, 81, 57, -1, -1,
1603 60, -1, -1, 63, 64, -1, 14, 15, 68, 69,
1604 70, 71, -1, -1, -1, 23, 24, 77, -1, -1,
1605 -1, 81, -1, -1, -1, -1, -1, -1, -1, -1,
1606 -1, -1, -1, 41, 42, -1, -1, -1, -1, -1,
1607 -1, 126, 127, -1, -1, 130, 131, 132, -1, 57,
1608 -1, -1, 60, -1, 62, -1, 64, -1, -1, -1,
1609 1 68, 69, 70, 71, -1, -1, 126, 127, -1, 77,
1610 1 130, 131, 132, 81, -1, -1, -1, -1, -1, -1,
1611 1 -1, -1, 14, 15, -1, -1, -1, -1, -1, -1,
1612 -1, 23, 24, 263, 264, 265, 266, 267, 268, 269,
1613
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 270, 271, 272, 273, 274, 275, 276, 14, 15, 41,
1614 42, -1, -1, -1, -1, -1, 23, 24, 126, 127,
1615 -1, -1, 130, 131, 132, 57, -1, -1, 60, -1,
1616 -1, -1, 64, 65, 41, 42, 68, 69, 70, 71,
1617 -1, -1, -1, -1, -1, 77, -1, -1, -1, 81,
1618 57, -1, -1, 60, -1, -1, -1, 64, -1, 14,
1619 15, 68, 69, 70, 71, -1, -1, -1, 23, 24,
1620 77, -1, -1, -1, 81, -1, -1, -1, -1, -1,
1621 -1, -1, -1, -1, -1, -1, 41, -1, -1, -1,
1622 -1, -1, -1, -1, 126, 127, -1, -1, 130, 131,
1623 132, -1, 57, -1, -1, 60, -1, -1, -1, 64,
1624 -1, -1, -1, 68, 69, 70, 71, -1, -1, 126,
1625 127, -1, 77, 130, 131, 132, 81, 19, -1, 21,
1626 22, -1, -1, -1, 26, -1, 28, -1, -1, -1,
1627 -1, -1, -1, -1, -1, 37, 38, 39, 40, -1,
1628 -1, 43, 44, 45, 46, 47, 48, 49, 50, 51,
1629 52, 53, -1, -1, -1, 57, -1, -1, -1, -1,
1630 -1, 126, 127, 65, -1, 130, 131, 132, -1, 71,
1631 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1632 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1633 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1634 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1635 -1, -1, -1, -1, -1, -1, -1, -1, -1, 121,
1636 -1, -1, -1, -1, 126
1637 };
1638
1639 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
1640 state STATE-NUM. */
1641 static const yytype_uint8 yystos[] =
1642 {
1643 0, 134, 135, 0, 3, 4, 13, 19, 21, 22,
1644 26, 27, 28, 29, 37, 38, 39, 40, 43, 44,
1645 45, 46, 47, 48, 49, 50, 51, 52, 53, 57,
1646 118, 121, 126, 136, 137, 140, 141, 142, 143, 144,
1647 145, 146, 147, 148, 149, 150, 151, 158, 167, 174,
1648 175, 176, 180, 181, 207, 209, 210, 212, 213, 214,
1649 215, 216, 21, 126, 166, 129, 126, 149, 149, 60,
1650 64, 92, 126, 211, 213, 215, 27, 28, 38, 149,
1651 158, 151, 158, 158, 158, 60, 126, 31, 32, 33,
1652 124, 56, 56, 56, 56, 152, 153, 154, 159, 160,
1653 210, 216, 56, 56, 3, 54, 126, 175, 56, 215,
1654 55, 209, 55, 209, 55, 209, 55, 209, 176, 64,
1655 168, 126, 14, 15, 23, 24, 41, 42, 60, 64,
1656 68, 69, 70, 71, 77, 81, 127, 130, 131, 132,
1657 210, 217, 218, 220, 221, 222, 223, 224, 225, 226,
1658 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
1659 237, 238, 239, 241, 244, 245, 246, 247, 248, 153,
1660 208, 216, 149, 64, 64, 211, 27, 241, 60, 129,
1661 129, 60, 11, 126, 54, 62, 92, 156, 56, 58,
1662 64, 185, 60, 126, 181, 216, 216, 216, 216, 216,
1663 216, 216, 216, 126, 22, 38, 65, 71, 121, 140,
1664 144, 145, 146, 151, 158, 159, 169, 170, 171, 172,
1665 173, 207, 210, 60, 60, 210, 237, 239, 239, 249,
1666 224, 224, 224, 224, 224, 149, 60, 62, 67, 68,
1667 69, 72, 73, 74, 75, 76, 77, 78, 79, 80,
1668 81, 82, 83, 84, 85, 91, 111, 86, 87, 88,
1669 89, 66, 90, 92, 93, 94, 95, 96, 97, 98,
1670 99, 100, 101, 102, 103, 104, 114, 61, 127, 54,
1671 65, 64, 208, 22, 65, 137, 138, 139, 140, 144,
1672 145, 146, 150, 151, 158, 167, 174, 175, 207, 211,
1673 54, 61, 61, 77, 131, 132, 245, 241, 11, 125,
1674 241, 11, 125, 241, 153, 63, 157, 241, 239, 11,
1675 5, 6, 7, 9, 12, 16, 17, 18, 20, 22,
1676 34, 35, 36, 38, 56, 64, 65, 140, 144, 145,
1677 146, 149, 151, 180, 183, 185, 186, 187, 189, 192,
1678 194, 195, 196, 197, 198, 199, 200, 202, 203, 204,
1679 205, 206, 207, 210, 239, 240, 106, 149, 161, 162,
1680 164, 165, 64, 177, 60, 170, 159, 56, 56, 56,
1681 65, 144, 170, 171, 173, 56, 56, 126, 129, 60,
1682 61, 54, 65, 62, 83, 61, 219, 239, 239, 126,
1683 224, 225, 225, 225, 226, 226, 227, 227, 228, 228,
1684 228, 228, 229, 229, 229, 229, 230, 231, 232, 233,
1685 236, 234, 238, 238, 238, 238, 238, 238, 238, 238,
1686 238, 238, 238, 238, 238, 238, 121, 136, 153, 208,
1687 65, 60, 65, 139, 144, 56, 56, 56, 56, 56,
1688 56, 245, 131, 132, 61, 61, 61, 54, 122, 123,
1689 122, 123, 122, 123, 122, 123, 122, 123, 122, 123,
1690 54, 63, 241, 60, 60, 60, 188, 60, 239, 60,
1691 56, 131, 56, 131, 182, 183, 60, 60, 188, 60,
1692 239, 56, 56, 56, 56, 197, 65, 144, 183, 8,
1693 56, 56, 56, 56, 149, 163, 216, 61, 54, 92,
1694 22, 65, 140, 144, 145, 146, 151, 158, 178, 179,
1695 207, 241, 61, 61, 61, 219, 239, 63, 241, 210,
1696 221, 54, 61, 63, 58, 65, 241, 61, 61, 61,
1697 129, 241, 56, 17, 18, 146, 151, 184, 185, 187,
1698 189, 192, 196, 202, 203, 205, 206, 207, 216, 240,
1699 60, 61, 62, 126, 149, 239, 243, 149, 155, 239,
1700 239, 239, 56, 56, 16, 34, 241, 239, 241, 182,
1701 62, 161, 241, 60, 56, 56, 56, 56, 65, 144,
1702 179, 56, 61, 61, 83, 63, 239, 236, 61, 61,
1703 131, 131, 56, 58, 59, 201, 239, 182, 239, 201,
1704 126, 106, 107, 108, 109, 110, 54, 61, 216, 61,
1705 61, 61, 61, 60, 60, 61, 61, 61, 63, 54,
1706 241, 173, 64, 83, 139, 239, 239, 54, 54, 243,
1707 201, 239, 239, 239, 239, 239, 239, 182, 92, 182,
1708 182, 64, 182, 239, 239, 184, 182, 183, 216, 162,
1709 164, 61, 249, 64, 56, 61, 239, 239, 54, 61,
1710 243, 61, 239, 8, 8, 10, 11, 190, 191, 8,
1711 61, 61, 8, 179, 65, 65, 249, 184, 193, 182,
1712 61, 63, 61, 63, 239, 182, 54, 61, 182, 182,
1713 182, 128, 239, 241, 242, 243, 58, 65, 191, 10,
1714 11, 186, 182, 8, 8, 182, 65, 54, 61, 8,
1715 61, 239, 182, 58, 58, 58, 186, 128, 241, 242,
1716 58, 182, 182, 184, 182, 182, 182, 61, 58, 58,
1717 58, 8, 182, 182
1718 };
1719
1720 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
1721 static const yytype_uint8 yyr1[] =
1722 {
1723 0, 133, 134, 135, 135, 135, 136, 136, 136, 136,
1724 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1725 136, 137, 137, 138, 138, 138, 138, 139, 139, 139,
1726 139, 139, 139, 139, 139, 139, 139, 139, 139, 140,
1727 141, 142, 142, 142, 143, 144, 144, 144, 144, 144,
1728 144, 144, 144, 144, 144, 144, 144, 145, 145, 146,
1729 146, 147, 148, 149, 149, 149, 149, 149, 149, 149,
1730 149, 149, 149, 149, 149, 150, 151, 151, 152, 152,
1731 153, 153, 154, 154, 155, 156, 156, 157, 157, 158,
1732 158, 158, 158, 158, 159, 159, 159, 160, 161, 161,
1733 161, 161, 161, 162, 163, 164, 164, 165, 166, 167,
1734 168, 168, 169, 169, 169, 169, 169, 169, 169, 169,
1735 170, 170, 171, 172, 173, 173, 173, 173, 173, 173,
1736 173, 174, 175, 176, 177, 177, 178, 178, 178, 178,
1737 179, 179, 179, 179, 179, 179, 179, 180, 180, 181,
1738 181, 181, 181, 181, 181, 182, 183, 183, 183, 183,
1739 1 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1740 183, 183, 183, 183, 183, 183, 183, 184, 184, 184,
1741 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1742 184, 184, 184, 184, 184, 185, 185, 186, 186, 186,
1743 186, 187, 187, 188, 188, 188, 188, 189, 190, 190,
1744 191, 191, 191, 191, 191, 191, 191, 191, 192, 192,
1745 57 193, 193, 194, 194, 195, 195, 196, 196, 197, 197,
1746 57 198, 199, 199, 200, 200, 200, 200, 200, 200, 201,
1747
2/6
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 57 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
57 201, 202, 202, 202, 202, 203, 203, 203, 203, 204,
1748 205, 205, 206, 207, 207, 208, 208, 209, 210, 210,
1749 210, 210, 211, 211, 212, 212, 212, 212, 213, 213,
1750 213, 214, 214, 215, 216, 217, 217, 218, 218, 218,
1751 218, 219, 219, 220, 220, 220, 221, 221, 222, 223,
1752 223, 223, 223, 223, 223, 224, 224, 224, 224, 224,
1753 224, 225, 225, 226, 226, 226, 226, 227, 227, 227,
1754 228, 228, 228, 229, 229, 229, 229, 229, 230, 230,
1755 230, 230, 230, 231, 231, 232, 232, 233, 233, 234,
1756 234, 235, 235, 236, 236, 237, 237, 238, 238, 238,
1757 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1758 238, 238, 239, 240, 241, 242, 243, 243, 243, 243,
1759 243, 243, 243, 243, 243, 244, 244, 244, 244, 244,
1760 244, 244, 244, 245, 245, 246, 247, 247, 248, 248,
1761 248, 248, 249, 249
1762 };
1763
1764 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
1765 static const yytype_int8 yyr2[] =
1766 {
1767 0, 2, 1, 2, 2, 0, 1, 1, 1, 2,
1768 2, 2, 1, 1, 1, 1, 2, 2, 2, 2,
1769 5, 4, 5, 2, 2, 1, 1, 1, 2, 2,
1770 3 2, 1, 1, 1, 1, 2, 2, 2, 5, 3,
1771 3 4, 2, 3, 7, 3, 5, 5, 5, 5, 5,
1772
2/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3 5, 5, 5, 5, 5, 5, 5, 4, 6, 1,
1773 1, 3, 5, 2, 1, 1, 1, 1, 1, 1,
1774 1, 1, 1, 1, 1, 4, 2, 2, 3, 1,
1775 3, 1, 2, 1, 4, 3, 2, 3, 1, 2,
1776 2, 2, 2, 2, 2, 2, 5, 4, 3, 1,
1777 1, 1, 0, 2, 4, 5, 3, 2, 1, 3,
1778 3, 2, 2, 2, 2, 2, 1, 1, 1, 1,
1779 2 2, 1, 2, 1, 2, 1, 2, 2, 2, 2,
1780 2 5, 2, 4, 1, 3, 2, 2, 2, 1, 1,
1781
2/6
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2 2, 1, 2, 2, 2, 2, 5, 3, 1, 5,
1782 5, 5, 6, 6, 4, 1, 2, 2, 2, 2,
1783 2, 1, 1, 1, 1, 1, 1, 1, 1, 2,
1784 2, 3, 2, 3, 1, 2, 2, 1, 1, 1,
1785 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1786 2, 1, 2, 0, 1, 3, 2, 2, 2, 1,
1787 1, 2, 2, 4, 6, 4, 6, 7, 3, 2,
1788 4, 3, 4, 4, 3, 3, 3, 2, 1, 1,
1789 3, 1, 9, 11, 7, 9, 2, 1, 1, 1,
1790 4, 3, 1, 10, 9, 7, 8, 7, 5, 1,
1791 1, 5, 7, 5, 7, 6, 8, 6, 8, 5,
1792 2, 1, 5, 4, 6, 3, 1, 1, 1, 1,
1793 1, 1, 1, 1, 3, 3, 3, 3, 3, 3,
1794 2, 3, 3, 1, 1, 1, 1, 4, 5, 3,
1795 4, 3, 1, 1, 1, 3, 1, 4, 3, 1,
1796 2, 2, 1, 4, 1, 1, 2, 2, 2, 2,
1797 2, 1, 3, 1, 3, 3, 3, 1, 3, 3,
1798 1, 3, 3, 1, 3, 3, 3, 3, 1, 3,
1799 3, 3, 3, 1, 3, 1, 3, 1, 3, 1,
1800 3, 1, 3, 1, 5, 1, 2, 1, 3, 3,
1801 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1802 21328 3, 3, 1, 1, 1, 1, 3, 3, 3, 3,
1803
2/6
✓ Branch 0 taken 21328 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21328 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
21328 3, 5, 5, 5, 5, 1, 1, 1, 1, 1,
1804
2/6
✓ Branch 0 taken 496 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 496 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
496 1, 4, 4, 2, 1, 1, 1, 1, 9, 8,
1805 8, 3, 3, 1
1806 };
1807
1808
1809 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */
1810 static const yytype_int8 yydprec[] =
1811 {
1812 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1813 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1814 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1815 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1816 1171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1817 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1818 26 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1819 26 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1820 26 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1821 26 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1822 26 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1823 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1824 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1825 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1826 21211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1827 21211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1828 21211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1829 21211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1830 21211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1831 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1832 1562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1833
2/6
✓ Branch 0 taken 1562 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1562 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1834 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1835 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1836 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1837 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1838 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1839 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1840 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1841 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1842 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1843 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1844 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1845 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1846 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1847 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1848 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1849 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1850 0, 0, 0, 0
1851 };
1852
1853 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */
1854 static const yytype_int8 yymerger[] =
1855 {
1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1857 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1858 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1859 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1860 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1861 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1862 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1863 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1864 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1865 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1866 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1867 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1868 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1869 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1870 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1872 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1873 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1874 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1875 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1876 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1877 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1879 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1880 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1881 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1882 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1883 118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1884 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1886 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1888 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1889 118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1890 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1891 246401 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1892 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1893 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1894 0, 0, 0, 0
1895 };
1896 133
1897 /* YYIMMEDIATE[RULE-NUM] -- True iff rule #RULE-NUM is not to be deferred, as
1898 in the case of predicates. */
1899 static const yybool yyimmediate[] =
1900 {
1901 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1903 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1905 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1906 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1909 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1912 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1916 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1917 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1918 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1919 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1920 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1921 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1923 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1924 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1926 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1927 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1928 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1930 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1931 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1932 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1933 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1934 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1936 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1939 0, 0, 0, 0
1940 };
1941
1942 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of
1943 list of conflicting reductions corresponding to action entry for
1944 state STATE-NUM in yytable. 0 means no conflicts. The list in
1945 yyconfl is terminated by a rule number of 0. */
1946 static const yytype_int8 yyconflp[] =
1947 {
1948 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1949 118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1950 118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1951 118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1952
2/4
✓ Branch 0 taken 118 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 118 times.
✗ Branch 3 not taken.
118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1953 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1954 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1955 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1956 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
1957 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1958 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1960 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1961 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1962 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1963 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1964 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1965 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1966 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1967 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1969 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1970 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1971 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1972 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1973 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
1974 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1975 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,
1976 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1977 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1978 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1979 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1980 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1981 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1982 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1983 246652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1984
3/8
✓ Branch 0 taken 246652 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 246652 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 246652 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
246652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1985 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1986 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1987
2/2
✓ Branch 0 taken 127965 times.
✓ Branch 1 taken 118687 times.
246652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1988 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1989 0, 0, 0, 0, 9, 0, 0, 0, 0, 0,
1990 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1991 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1992 433369 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1993 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1994 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1995 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1996 2918 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1997 18364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1998 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,
1999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2000 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2001 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2002
2/6
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 56 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
56 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2004 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2005 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2006 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2007 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2008 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2009 7 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2010 7 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2011 7 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2012 7 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2013 7 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2014 7 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2016
2/6
✓ Branch 0 taken 904 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 904 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2017 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2018 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2019 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2020 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2021 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2022 20378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2023 20378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2024 20378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2025 20378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2026 20378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2027 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2028 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2029 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2030 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2031 22965 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2032 22965 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2033 22965 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2034 22965 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2035 22965 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2036 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2037
2/6
✓ Branch 0 taken 20385 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 20385 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
20385 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2038 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2039 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2040 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2041 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2042 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2043 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2044 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2045 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2046 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2048 147491 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2049 91794 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2050 22530 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2051 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2052 261815 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2053 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2054 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2055 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2056 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2057 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2058 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2059 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2060 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2061 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2063 122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2064 122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2065
2/6
✓ Branch 0 taken 122 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 122 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2066 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2067 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2068 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2069 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2070 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2071 43318 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2072 43318 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2073
2/6
✓ Branch 0 taken 43318 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 43318 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
43318 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2074 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2075 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2076 261815 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2077 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2078
3/8
✓ Branch 0 taken 400 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 400 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 400 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2079 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2080
3/8
✓ Branch 0 taken 155 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 155 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 155 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
155 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2081 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2082 21345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2083 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2084 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2085
3/8
✓ Branch 0 taken 13686 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 13686 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 13686 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
27372 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2086 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2087 40400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2088 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2089 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2090 280242 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2091 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2092
3/8
✓ Branch 0 taken 1611 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1611 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1611 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1611 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2093 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2094
3/8
✓ Branch 0 taken 788 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 788 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 788 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
788 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2095 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2096
3/8
✓ Branch 0 taken 4776 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4776 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4776 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
4776 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2097 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2098
3/8
✓ Branch 0 taken 424 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 424 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 424 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2099 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2100
3/8
✓ Branch 0 taken 113 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 113 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 113 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
113 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2101 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2102 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2103 280242 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2105 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2106 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2107 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2108 276757 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2109 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2110
3/8
✓ Branch 0 taken 2010 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2010 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2010 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
4020 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2111 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2112
3/8
✓ Branch 0 taken 761 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 761 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 761 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1522 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2113 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2114
3/8
✓ Branch 0 taken 714 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 714 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 714 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1428 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2115 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2117 256656 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2119
3/8
✓ Branch 0 taken 11606 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 11606 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 11606 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
23212 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2120 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2121
3/8
✓ Branch 0 taken 8495 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8495 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8495 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
16990 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2124 255040 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2126
3/8
✓ Branch 0 taken 669 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 669 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 669 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2128
3/8
✓ Branch 0 taken 947 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 947 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 947 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2131 242815 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2133
3/8
✓ Branch 0 taken 5923 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5923 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5923 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
11846 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2134 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2135
3/8
✓ Branch 0 taken 961 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 961 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 961 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2136 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2137
3/8
✓ Branch 0 taken 3889 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3889 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3889 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
7778 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2138 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2139
3/8
✓ Branch 0 taken 1452 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1452 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1452 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2140 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2141 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2142 238137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2144
3/8
✓ Branch 0 taken 3677 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3677 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3677 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
7354 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2145 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2146
3/8
✓ Branch 0 taken 936 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 936 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 936 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1872 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2149 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2150
3/8
✓ Branch 0 taken 65 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 65 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 65 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2151 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2152 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2153 235421 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2154 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2155
3/8
✓ Branch 0 taken 2716 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2716 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2716 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
5432 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2156 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2157 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2158 235356 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2159 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2160
3/8
✓ Branch 0 taken 65 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 65 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 65 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2161 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2162 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2163 235289 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2165
3/8
✓ Branch 0 taken 67 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 67 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 67 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
134 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2167 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2168 230381 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2169 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2170
3/8
✓ Branch 0 taken 4908 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4908 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4908 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
9816 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2172 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2173 228475 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2174 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2175
3/8
✓ Branch 0 taken 1906 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1906 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1906 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
3812 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2176 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2178 224530 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2179 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2180 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2181 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2182 3945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2183 3945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2184 3945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2185
2/6
✓ Branch 0 taken 3945 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3945 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2186 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2188 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2189 220585 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2190 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2191
2/6
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2193 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2196 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2197 202506 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2198 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2199
3/8
✓ Branch 0 taken 13498 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 13498 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 13498 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
26996 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2200 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2202 938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2203 938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2204
3/10
✓ Branch 0 taken 938 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 938 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 938 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
1876 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2207 153 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2208 153 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2209
3/10
✓ Branch 0 taken 153 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 153 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 153 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
306 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2210 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2212 41 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2213 41 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2214
3/10
✓ Branch 0 taken 41 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 41 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 41 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
82 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2215 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2216 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2217 85 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2218 85 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2219
3/10
✓ Branch 0 taken 85 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 85 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 85 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
170 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2221 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2222 17 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2223 17 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2224
3/10
✓ Branch 0 taken 17 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 17 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 17 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
34 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2225 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2226 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2227 114 0, 0, 0, 0, 0
2228 114 };
2229
3/10
✓ Branch 0 taken 114 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 114 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 114 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
228
2230 /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by
2231 0, pointed into by YYCONFLP. */
2232 static const short yyconfl[] =
2233 {
2234 0, 258, 0, 259, 0, 260, 0, 261, 0, 77,
2235 0, 232, 0
2236 };
2237 86
2238 86
2239
3/10
✓ Branch 0 taken 86 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 86 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 86 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
172 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2240 If N is 0, then set CURRENT to the empty location which ends
2241 the previous symbol: RHS[0] (always defined). */
2242
2243 1510 #ifndef YYLLOC_DEFAULT
2244 1510 # define YYLLOC_DEFAULT(Current, Rhs, N) \
2245
3/10
✓ Branch 0 taken 1510 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1510 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1510 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
3020 do \
2246 if (N) \
2247 { \
2248 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2249 15 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2250 15 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2251
3/10
✓ Branch 0 taken 15 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 15 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 15 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
30 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2252 } \
2253 else \
2254 1617 { \
2255 1617 (Current).first_line = (Current).last_line = \
2256
3/10
✓ Branch 0 taken 1617 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1617 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1617 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
3234 YYRHSLOC (Rhs, 0).last_line; \
2257 (Current).first_column = (Current).last_column = \
2258 YYRHSLOC (Rhs, 0).last_column; \
2259 5 } \
2260 5 while (0)
2261
3/10
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
10 #endif
2262
2263 # define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc)
2264
2265
2266 YYSTYPE yylval;
2267 YYLTYPE yylloc;
2268
2269 202506 int yynerrs;
2270 int yychar;
2271
2272 enum { YYENOMEM = -2 };
2273 24285
2274 24285 typedef enum { yyok, yyaccept, yyabort, yyerr, yynomem } YYRESULTTAG;
2275 24285
2276 #define YYCHK(YYE) \
2277 do { \
2278 YYRESULTTAG yychk_flag = YYE; \
2279 if (yychk_flag != yyok) \
2280 17470 return yychk_flag; \
2281
2/6
✓ Branch 0 taken 17470 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 17470 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
17470 } while (0)
2282
2283 /* YYINITDEPTH -- initial size of the parser's stacks. */
2284 #ifndef YYINITDEPTH
2285 # define YYINITDEPTH 200
2286 39 #endif
2287 39
2288
1/2
✓ Branch 0 taken 39 times.
✗ Branch 1 not taken.
39 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2289 if the built-in stack extension method is used).
2290
2291 Do not make this value too large; the results are undefined if
2292 SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem)
2293 evaluated with infinite-precision integer arithmetic. */
2294
2295 #ifndef YYMAXDEPTH
2296 # define YYMAXDEPTH 10000
2297 39 #endif
2298 39
2299
2/6
✓ Branch 0 taken 39 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 39 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
39 /* Minimum number of free items on the stack allowed after an
2300 allocation. This is to allow allocation and initialization
2301 to be completed by functions that call yyexpandGLRStack before the
2302 stack is expanded, thus insuring that all necessary pointers get
2303 properly redirected to new data. */
2304 #define YYHEADROOM 2
2305
2306 #ifndef YYSTACKEXPANDABLE
2307 # define YYSTACKEXPANDABLE 1
2308 #endif
2309
2310 #if YYSTACKEXPANDABLE
2311 # define YY_RESERVE_GLRSTACK(Yystack) \
2312 do { \
2313 if (Yystack->yyspaceLeft < YYHEADROOM) \
2314 yyexpandGLRStack (Yystack); \
2315 } while (0)
2316 #else
2317 # define YY_RESERVE_GLRSTACK(Yystack) \
2318 do { \
2319 if (Yystack->yyspaceLeft < YYHEADROOM) \
2320 yyMemoryExhausted (Yystack); \
2321 } while (0)
2322 #endif
2323
2324 /** State numbers. */
2325 typedef int yy_state_t;
2326
2327 /** Rule numbers. */
2328 typedef int yyRuleNum;
2329
2330 /** Item references. */
2331 typedef short yyItemNum;
2332
2333 typedef struct yyGLRState yyGLRState;
2334 typedef struct yyGLRStateSet yyGLRStateSet;
2335 typedef struct yySemanticOption yySemanticOption;
2336 typedef union yyGLRStackItem yyGLRStackItem;
2337 typedef struct yyGLRStack yyGLRStack;
2338
2339 struct yyGLRState
2340 {
2341 /** Type tag: always true. */
2342 yybool yyisState;
2343 /** Type tag for yysemantics. If true, yyval applies, otherwise
2344 * yyfirstVal applies. */
2345 yybool yyresolved;
2346 /** Number of corresponding LALR(1) machine state. */
2347 81190 yy_state_t yylrState;
2348
2/6
✓ Branch 0 taken 81190 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 81190 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
81190 /** Preceding state in this stack */
2349 yyGLRState* yypred;
2350 724 /** Source position of the last token produced by my symbol */
2351
2/6
✓ Branch 0 taken 724 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 724 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
724 YYPTRDIFF_T yyposn;
2352 union {
2353 3104 /** First in a chain of alternative reductions producing the
2354
4/10
✓ Branch 0 taken 3104 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3104 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3104 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3104 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
3104 * nonterminal corresponding to this state, threaded through
2355 * yynext. */
2356 1689 yySemanticOption* yyfirstVal;
2357 4780 /** Semantic value for this state. */
2358 151 YYSTYPE yyval;
2359 } yysemantics;
2360 156 /** Source location for this state. */
2361
3/8
✓ Branch 0 taken 156 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 156 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 156 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
156 YYLTYPE yyloc;
2362 };
2363
2364 struct yyGLRStateSet
2365 {
2366 yyGLRState** yystates;
2367 /** During nondeterministic operation, yylookaheadNeeds tracks which
2368 * stacks have actually needed the current lookahead. During deterministic
2369 * operation, yylookaheadNeeds[0] is not maintained since it would merely
2370 * duplicate yychar != TOK_YYEMPTY. */
2371 yybool* yylookaheadNeeds;
2372 YYPTRDIFF_T yysize;
2373 YYPTRDIFF_T yycapacity;
2374 };
2375
2376 1689 struct yySemanticOption
2377 {
2378 /** Type tag: always false. */
2379 yybool yyisState;
2380 /** Rule number for this reduction */
2381 1689 yyRuleNum yyrule;
2382
2/4
✓ Branch 0 taken 1689 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1689 times.
1689 /** The last RHS state in the list of states to be reduced. */
2383 yyGLRState* yystate;
2384 /** The lookahead for this reduction. */
2385 int yyrawchar;
2386 YYSTYPE yyval;
2387 YYLTYPE yyloc;
2388 /** Next sibling in chain of options. To facilitate merging,
2389
2/6
✓ Branch 0 taken 2467 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2467 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2467 * options are chained in decreasing order by address. */
2390
2/6
✓ Branch 0 taken 2313 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2313 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2313 yySemanticOption* yynext;
2391 };
2392
2393 /** Type of the items in the GLR stack. The yyisState field
2394 * indicates which item of the union is valid. */
2395 union yyGLRStackItem {
2396 yyGLRState yystate;
2397 yySemanticOption yyoption;
2398 };
2399
2400 struct yyGLRStack {
2401 int yyerrState;
2402 /* To compute the location of the error token. */
2403 yyGLRStackItem yyerror_range[3];
2404
2405 YYJMP_BUF yyexception_buffer;
2406 yyGLRStackItem* yyitems;
2407 yyGLRStackItem* yynextFree;
2408 YYPTRDIFF_T yyspaceLeft;
2409 yyGLRState* yysplitPoint;
2410 yyGLRState* yylastDeleted;
2411 yyGLRStateSet yytops;
2412 };
2413
2414 #if YYSTACKEXPANDABLE
2415 static void yyexpandGLRStack (yyGLRStack* yystackp);
2416 #endif
2417
2418 _Noreturn static void
2419 1 yyFail (yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root, const char* yymsg)
2420 {
2421
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 if (yymsg != YY_NULLPTR)
2422 yyerror (root, yymsg);
2423 1 YYLONGJMP (yystackp->yyexception_buffer, 1);
2424 }
2425
2426 _Noreturn static void
2427 yyMemoryExhausted (yyGLRStack* yystackp)
2428 {
2429 151 YYLONGJMP (yystackp->yyexception_buffer, 2);
2430 151 }
2431 151
2432 /** Accessing symbol of state YYSTATE. */
2433 static inline yysymbol_kind_t
2434 2879 yy_accessing_symbol (yy_state_t yystate)
2435 {
2436 3679 return YY_CAST (yysymbol_kind_t, yystos[yystate]);
2437 800 }
2438 800
2439 800 #if 1
2440 /* The user-facing name of the symbol whose (internal) number is
2441 151 YYSYMBOL. No bounds checking. */
2442
2/6
✓ Branch 0 taken 151 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 151 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
151 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2443
2444 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
2445 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
2446 static const char *const yytname[] =
2447 {
2448 "\"end of file\"", "error", "\"invalid token\"", "SCRIPT", "ZCLASS",
2449 "FOR", "LOOP", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT", "RETURN",
2450 "IMPORT", "ZTRUE", "ZFALSE", "WHILE", "BREAK", "CONTINUE", "ZCONST",
2451 "DO", "TYPEDEF", "EXPECTERROR", "OPTIONVALUE", "ISINCLUDED", "DEFINE",
2452 "ENUM", "NAMESPACE", "USING", "ALWAYS", "ZASM", "INCLUDE", "INCLUDEPATH",
2453 "INCLUDEIF", "UNTIL", "UNLESS", "REPEAT", "INLINE", "INTERNAL", "STATIC",
2454 "CONSTEXPR", "NEW", "DELETE", "CASSERT", "ZAUTO", "TEMPLATE_T",
2455 "TEMPLATE_T_ARR", "ZVOID", "UNTYPED", "ZBOOL", "ZFLOAT", "ZCHAR",
2456 "ZLONG", "ZRGB", "COMMA", "DOT", "SEMICOLON", "SCOPERES", "COLON", "IN",
2457 "LPAREN", "RPAREN", "LBRACKET", "RBRACKET", "LBRACE", "RBRACE", "QMARK",
2458 "ARROW", "INCREMENT", "DECREMENT", "NOT", "BITNOT", "EXPN", "TIMES",
2459 "DIVIDE", "MODULO", "PLUS", "MINUS", "LSHIFT", "RSHIFT", "LE", "LT",
2460 "GE", "GT", "EQ", "NE", "BITAND", "BITXOR", "BITOR", "AND", "OR", "XOR",
2461 "ASSIGN", "PLUSASSIGN", "MINUSASSIGN", "TIMESASSIGN", "DIVIDEASSIGN",
2462 "MODULOASSIGN", "LSHIFTASSIGN", "RSHIFTASSIGN", "BITANDASSIGN",
2463 "BITXORASSIGN", "BITORASSIGN", "ANDASSIGN", "ORASSIGN", "CAST", "RANGE",
2464 "RANGE_L", "RANGE_R", "RANGE_LR", "RANGE_N", "APPXEQUAL", "DOUBLEBANG",
2465 "PERCENT", "BITNOTASSIGN", "INVMOD", "DOUBLEADDR", "DOUBLESTAR",
2466 "HANDLE", "HANDLETOHANDLE", "ADDR", "HASH", "ENDLINE", "NEWLINE",
2467 "OPTION", "INHERIT", "IDENTIFIER", "QUOTEDSTRING", "CASESTRING",
2468 "IMPORTSTRING", "SINGLECHAR", "NUMBER", "LONGNUMBER", "$accept", "Init",
2469 "Global_List", "Global_Statement", "Namespace", "Namespace_Block_List",
2470 "Namespace_Statement", "Using", "AlwaysUsing", "Import", "IncludePath",
2471 "Option", "Statement_Assert", "DataTypeDef", "StandardDataTypedef",
2472 "EnumDataTypedef", "DataType", "ScriptTypeDef", "Data", "Data_List",
2473 "Data_Element", "Data_Element_Array_List", "Single_Data_req_assign",
2474 "Data_Element_Array_Element", "Data_Element_Array_Element_Size_List",
2475 "Function", "Function_Typeless", "Function_Heading",
2476 "Function_Parameters_List", "Function_Parameters_Element",
2477 "Function_Parameters_Bracket_Element", "Function_OptParams_List",
2478 "Function_VarArg_Element", "Class_Ident", "Class", "Class_Block",
2479 "Class_Block_List", "Class_Constructor", "Class_Destructor",
2480 "Class_Data", "Class_Block_Element", "Annotated_Script", "Script",
2481 "Script_Type", "Script_Block", "Script_Block_List",
2482 "Script_Block_Element", "Annotation_List", "Annotation",
2483 "Block_Statement", "Statement", "Statement_NoSemicolon",
2484 "Statement_Block", "Statement_Block_List", "Statement_If", "If_Body",
2485 "Statement_Switch", "Statement_Switch_Body", "Statement_Switch_Cases",
2486 "Statement_For", "Statement_CommaList", "Statement_For_Standard",
2487 "Statement_For_Each", "Annotated_Loop", "Statement_Loop",
2488 "Statement_Loop_Inf", "Statement_Loop_Range",
2489 "Statement_Loop_Range_Base", "Token_In", "Statement_While",
2490 "Statement_Do", "Statement_Repeat", "Statement_Return",
2491 "Statement_CompileError", "DataEnum", "Enum_Block", "ScopeRes",
2492 "Identifier_List", "Scoperes_Identifier_List", "Mixed_Identifier_List",
2493 "idlist_scopres", "idlist_dot", "Ambigious_Iden_List", "Identifier",
2494 "Func_Left", "Function_Call", "Function_Call_Parameters", "Expr_1",
2495 "Expr_2", "Expr_Arrow", "Expr_3", "Expr_4", "Expr_5", "Expr_6", "Expr_7",
2496 "Expr_8", "Expr_9", "Expr_10", "Expr_11", "Expr_12", "Expr_13",
2497 "Expr_14", "Expr_15", "Expr_16", "Expr_17", "Expr_18", "Expression",
2498 "Statement_Expression", "Expression_Constant", "Expression_Const_Range",
2499 "Expression_Range", "Literal", "QuotedString", "Literal_String",
2500 "Literal_Bool", "Literal_Array", "Literal_Array_Body", YY_NULLPTR
2501 };
2502
2503 static const char *
2504 yysymbol_name (yysymbol_kind_t yysymbol)
2505 {
2506 return yytname[yysymbol];
2507 }
2508 #endif
2509
2510 /** Left-hand-side symbol for rule #YYRULE. */
2511 static inline yysymbol_kind_t
2512 7458045 yylhsNonterm (yyRuleNum yyrule)
2513 {
2514 7458045 return YY_CAST (yysymbol_kind_t, yyr1[yyrule]);
2515 }
2516
2517 #if YYDEBUG
2518
2519 # ifndef YYFPRINTF
2520 # define YYFPRINTF fprintf
2521 # endif
2522
2523 # define YY_FPRINTF \
2524 YY_IGNORE_USELESS_CAST_BEGIN YY_FPRINTF_
2525
2526 # define YY_FPRINTF_(Args) \
2527 do { \
2528 YYFPRINTF Args; \
2529 YY_IGNORE_USELESS_CAST_END \
2530 } while (0)
2531
2532 # define YY_DPRINTF \
2533 YY_IGNORE_USELESS_CAST_BEGIN YY_DPRINTF_
2534
2535 # define YY_DPRINTF_(Args) \
2536 do { \
2537 if (yydebug) \
2538 YYFPRINTF Args; \
2539 YY_IGNORE_USELESS_CAST_END \
2540 } while (0)
2541
2542
2543 /* YYLOCATION_PRINT -- Print the location on the stream.
2544 This macro was not mandated originally: define only if we know
2545 we won't break user code: when these are the locations we know. */
2546
2547 # ifndef YYLOCATION_PRINT
2548
2549 # if defined YY_LOCATION_PRINT
2550
2551 /* Temporary convenience wrapper in case some people defined the
2552 undocumented and private YY_LOCATION_PRINT macros. */
2553 # define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
2554
2555 # elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
2556
2557 /* Print *YYLOCP on YYO. Private, do not rely on its existence. */
2558
2559 YY_ATTRIBUTE_UNUSED
2560 static int
2561 yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
2562 {
2563 int res = 0;
2564 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
2565 if (0 <= yylocp->first_line)
2566 {
2567 res += YYFPRINTF (yyo, "%d", yylocp->first_line);
2568 if (0 <= yylocp->first_column)
2569 res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
2570 }
2571 if (0 <= yylocp->last_line)
2572 {
2573 if (yylocp->first_line < yylocp->last_line)
2574 {
2575 res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
2576 if (0 <= end_col)
2577 res += YYFPRINTF (yyo, ".%d", end_col);
2578 }
2579 else if (0 <= end_col && yylocp->first_column < end_col)
2580 res += YYFPRINTF (yyo, "-%d", end_col);
2581 }
2582 return res;
2583 }
2584
2585 # define YYLOCATION_PRINT yy_location_print_
2586
2587 /* Temporary convenience wrapper in case some people defined the
2588 undocumented and private YY_LOCATION_PRINT macros. */
2589 # define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
2590
2591 # else
2592
2593 # define YYLOCATION_PRINT(File, Loc) ((void) 0)
2594 /* Temporary convenience wrapper in case some people defined the
2595 undocumented and private YY_LOCATION_PRINT macros. */
2596 # define YY_LOCATION_PRINT YYLOCATION_PRINT
2597
2598 # endif
2599 # endif /* !defined YYLOCATION_PRINT */
2600
2601
2602
2603 /*-----------------------------------.
2604 | Print this symbol's value on YYO. |
2605 `-----------------------------------*/
2606
2607 static void
2608 yy_symbol_value_print (FILE *yyo,
2609 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, std::unique_ptr<ZScript::ASTFile>& root)
2610 {
2611 FILE *yyoutput = yyo;
2612 YY_USE (yyoutput);
2613 YY_USE (yylocationp);
2614 YY_USE (root);
2615 if (!yyvaluep)
2616 return;
2617 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2618 YY_USE (yykind);
2619 YY_IGNORE_MAYBE_UNINITIALIZED_END
2620 }
2621
2622
2623 /*---------------------------.
2624 | Print this symbol on YYO. |
2625 `---------------------------*/
2626
2627 static void
2628 yy_symbol_print (FILE *yyo,
2629 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, std::unique_ptr<ZScript::ASTFile>& root)
2630 {
2631 YYFPRINTF (yyo, "%s %s (",
2632 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
2633
2634 YYLOCATION_PRINT (yyo, yylocationp);
2635 YYFPRINTF (yyo, ": ");
2636 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, root);
2637 YYFPRINTF (yyo, ")");
2638 }
2639
2640 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
2641 do { \
2642 if (yydebug) \
2643 { \
2644 YY_FPRINTF ((stderr, "%s ", Title)); \
2645 yy_symbol_print (stderr, Kind, Value, Location, root); \
2646 YY_FPRINTF ((stderr, "\n")); \
2647 } \
2648 } while (0)
2649
2650 static inline void
2651 yy_reduce_print (yybool yynormal, yyGLRStackItem* yyvsp, YYPTRDIFF_T yyk,
2652 yyRuleNum yyrule, std::unique_ptr<ZScript::ASTFile>& root);
2653
2654 # define YY_REDUCE_PRINT(Args) \
2655 do { \
2656 if (yydebug) \
2657 yy_reduce_print Args; \
2658 } while (0)
2659
2660 /* Nonzero means print parse trace. It is left uninitialized so that
2661 multiple parsers can coexist. */
2662 int yydebug;
2663
2664 static void yypstack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
2665 YY_ATTRIBUTE_UNUSED;
2666 static void yypdumpstack (yyGLRStack* yystackp)
2667 YY_ATTRIBUTE_UNUSED;
2668
2669 #else /* !YYDEBUG */
2670
2671 # define YY_DPRINTF(Args) do {} while (yyfalse)
2672 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
2673 # define YY_REDUCE_PRINT(Args)
2674
2675 #endif /* !YYDEBUG */
2676
2677 #ifndef yystrlen
2678 # define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
2679 #endif
2680
2681 #ifndef yystpcpy
2682 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2683 # define yystpcpy stpcpy
2684 # else
2685 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2686 YYDEST. */
2687 static char *
2688 yystpcpy (char *yydest, const char *yysrc)
2689 {
2690 char *yyd = yydest;
2691 const char *yys = yysrc;
2692
2693 while ((*yyd++ = *yys++) != '\0')
2694 continue;
2695
2696 return yyd - 1;
2697 }
2698 # endif
2699 #endif
2700
2701 #ifndef yytnamerr
2702 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2703 quotes and backslashes, so that it's suitable for yyerror. The
2704 heuristic is that double-quoting is unnecessary unless the string
2705 contains an apostrophe, a comma, or backslash (other than
2706 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2707 null, do not copy; instead, return the length of what the result
2708 would have been. */
2709 static YYPTRDIFF_T
2710 4 yytnamerr (char *yyres, const char *yystr)
2711 {
2712
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
4 if (*yystr == '"')
2713 {
2714 2 YYPTRDIFF_T yyn = 0;
2715 2 char const *yyp = yystr;
2716
2717 24 for (;;)
2718
2/4
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
24 switch (*++yyp)
2719 {
2720 case '\'':
2721 case ',':
2722 goto do_not_strip_quotes;
2723
2724 case '\\':
2725 if (*++yyp != '\\')
2726 goto do_not_strip_quotes;
2727 else
2728 goto append;
2729
2730 append:
2731 default:
2732
2/2
✓ Branch 0 taken 11 times.
✓ Branch 1 taken 11 times.
22 if (yyres)
2733 11 yyres[yyn] = *yyp;
2734 22 yyn++;
2735 22 break;
2736
2737 case '"':
2738
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
2 if (yyres)
2739 1 yyres[yyn] = '\0';
2740 2 return yyn;
2741 }
2742 do_not_strip_quotes: ;
2743 }
2744
2745
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
2 if (yyres)
2746 1 return yystpcpy (yyres, yystr) - yyres;
2747 else
2748 1 return yystrlen (yystr);
2749 4 }
2750 #endif
2751
2752
2753 /** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting
2754 * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred
2755 * containing the pointer to the next state in the chain. */
2756 static void yyfillin (yyGLRStackItem *, int, int) YY_ATTRIBUTE_UNUSED;
2757 static void
2758 yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1)
2759 {
2760 int i;
2761 yyGLRState *s = yyvsp[yylow0].yystate.yypred;
2762 for (i = yylow0-1; i >= yylow1; i -= 1)
2763 {
2764 #if YYDEBUG
2765 yyvsp[i].yystate.yylrState = s->yylrState;
2766 #endif
2767 yyvsp[i].yystate.yyresolved = s->yyresolved;
2768 if (s->yyresolved)
2769 yyvsp[i].yystate.yysemantics.yyval = s->yysemantics.yyval;
2770 else
2771 /* The effect of using yyval or yyloc (in an immediate rule) is
2772 * undefined. */
2773 yyvsp[i].yystate.yysemantics.yyfirstVal = YY_NULLPTR;
2774 yyvsp[i].yystate.yyloc = s->yyloc;
2775 s = yyvsp[i].yystate.yypred = s->yypred;
2776 }
2777 }
2778
2779
2780 /** If yychar is empty, fetch the next token. */
2781 static inline yysymbol_kind_t
2782 5576413 yygetToken (int *yycharp, std::unique_ptr<ZScript::ASTFile>& root)
2783 {
2784 yysymbol_kind_t yytoken;
2785 5576413 YY_USE (root);
2786
2/2
✓ Branch 0 taken 4003595 times.
✓ Branch 1 taken 1572818 times.
5576413 if (*yycharp == TOK_YYEMPTY)
2787 {
2788 1572818 YY_DPRINTF ((stderr, "Reading a token\n"));
2789 1572818 *yycharp = yylex ();
2790 1572818 }
2791
2/2
✓ Branch 0 taken 2878 times.
✓ Branch 1 taken 5573535 times.
5576413 if (*yycharp <= TOK_YYEOF)
2792 {
2793 2878 *yycharp = TOK_YYEOF;
2794 2878 yytoken = YYSYMBOL_YYEOF;
2795 2878 YY_DPRINTF ((stderr, "Now at end of input.\n"));
2796 2878 }
2797 else
2798 {
2799
2/4
✓ Branch 0 taken 5573535 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5573535 times.
✗ Branch 3 not taken.
5573535 yytoken = YYTRANSLATE (*yycharp);
2800 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2801 }
2802 5576413 return yytoken;
2803 }
2804
2805 /* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in
2806 * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1.
2807 * For convenience, always return YYLOW1. */
2808 static inline int yyfill (yyGLRStackItem *, int *, int, yybool)
2809 YY_ATTRIBUTE_UNUSED;
2810 static inline int
2811 15416302 yyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal)
2812 {
2813
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 15416302 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
15416302 if (!yynormal && yylow1 < *yylow)
2814 {
2815 yyfillin (yyvsp, *yylow, yylow1);
2816 *yylow = yylow1;
2817 }
2818 15416302 return yylow1;
2819 }
2820
2821 /** Perform user action for rule number YYN, with RHS length YYRHSLEN,
2822 * and top stack item YYVSP. YYLVALP points to place to put semantic
2823 * value ($$), and yylocp points to place for location information
2824 * (@$). Returns yyok for normal return, yyaccept for YYACCEPT,
2825 * yyerr for YYERROR, yyabort for YYABORT, yynomem for YYNOMEM. */
2826 static YYRESULTTAG
2827 7455512 yyuserAction (yyRuleNum yyrule, int yyrhslen, yyGLRStackItem* yyvsp,
2828 yyGLRStack* yystackp, YYPTRDIFF_T yyk,
2829 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::unique_ptr<ZScript::ASTFile>& root)
2830 {
2831 7455512 const yybool yynormal YY_ATTRIBUTE_UNUSED = yystackp->yysplitPoint == YY_NULLPTR;
2832 7455512 int yylow = 1;
2833 YY_USE (yyvalp);
2834 YY_USE (yylocp);
2835 7455512 YY_USE (root);
2836 YY_USE (yyk);
2837 YY_USE (yyrhslen);
2838 # undef yyerrok
2839 # define yyerrok (yystackp->yyerrState = 0)
2840 # undef YYACCEPT
2841 # define YYACCEPT return yyaccept
2842 # undef YYABORT
2843 # define YYABORT return yyabort
2844 # undef YYNOMEM
2845 # define YYNOMEM return yynomem
2846 # undef YYERROR
2847 # define YYERROR return yyerrok, yyerr
2848 # undef YYRECOVERING
2849 # define YYRECOVERING() (yystackp->yyerrState != 0)
2850 # undef yyclearin
2851 # define yyclearin (yychar = TOK_YYEMPTY)
2852 # undef YYFILL
2853 # define YYFILL(N) yyfill (yyvsp, &yylow, (N), yynormal)
2854 # undef YYBACKUP
2855 # define YYBACKUP(Token, Value) \
2856 return yyerror (root, YY_("syntax error: cannot back up")), \
2857 yyerrok, yyerr
2858
2859
2/2
✓ Branch 0 taken 7448649 times.
✓ Branch 1 taken 6863 times.
7455512 if (yyrhslen == 0)
2860 6863 *yyvalp = yyval_default;
2861 else
2862 7448649 *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yyval;
2863 /* Default location. */
2864
2/2
✓ Branch 0 taken 7448649 times.
✓ Branch 1 taken 6863 times.
7455512 YYLLOC_DEFAULT ((*yylocp), (yyvsp - yyrhslen), yyrhslen);
2865 7455512 yystackp->yyerror_range[1].yystate.yyloc = *yylocp;
2866 /* If yyk == -1, we are running a deferred action on a temporary
2867 stack. In that case, YY_REDUCE_PRINT must not play with YYFILL,
2868 so pretend the stack is "normal". */
2869 YY_REDUCE_PRINT ((yynormal || yyk == -1, yyvsp, yyk, yyrule, root));
2870
238/383
✓ Branch 0 taken 1387 times.
✓ Branch 1 taken 107 times.
✓ Branch 2 taken 15348 times.
✓ Branch 3 taken 28 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 416 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 494 times.
✓ Branch 11 taken 1047 times.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✓ Branch 14 taken 28 times.
✓ Branch 15 taken 27 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 21900 times.
✓ Branch 20 taken 5371 times.
✓ Branch 21 taken 817 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1440 times.
✓ Branch 25 taken 57827 times.
✓ Branch 26 taken 54 times.
✓ Branch 27 taken 1440 times.
✓ Branch 28 taken 13 times.
✓ Branch 29 taken 534 times.
✓ Branch 30 taken 26 times.
✓ Branch 31 taken 38149 times.
✗ Branch 32 not taken.
✓ Branch 33 taken 1052 times.
✓ Branch 34 taken 1183 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 133 times.
✓ Branch 40 taken 1101 times.
✗ Branch 41 not taken.
✓ Branch 42 taken 133 times.
✗ Branch 43 not taken.
✓ Branch 44 taken 26 times.
✓ Branch 45 taken 7 times.
✓ Branch 46 taken 28 times.
✓ Branch 47 taken 1172 times.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✓ Branch 50 taken 1 times.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 1068 times.
✓ Branch 56 taken 319 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 13 times.
✓ Branch 59 taken 54 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✓ Branch 73 taken 176 times.
✓ Branch 74 taken 365 times.
✓ Branch 75 taken 176 times.
✓ Branch 76 taken 365 times.
✓ Branch 77 taken 11248 times.
✓ Branch 78 taken 17 times.
✓ Branch 79 taken 364 times.
✓ Branch 80 taken 364 times.
✓ Branch 81 taken 13295 times.
✓ Branch 82 taken 2890 times.
✓ Branch 83 taken 16123 times.
✓ Branch 84 taken 111250 times.
✓ Branch 85 taken 8339 times.
✓ Branch 86 taken 1250 times.
✓ Branch 87 taken 286 times.
✓ Branch 88 taken 44728 times.
✓ Branch 89 taken 26 times.
✓ Branch 90 taken 35464 times.
✓ Branch 91 taken 82048 times.
✓ Branch 92 taken 42 times.
✓ Branch 93 taken 82048 times.
✓ Branch 94 taken 46217 times.
✓ Branch 95 taken 58646 times.
✓ Branch 96 taken 8560 times.
✓ Branch 97 taken 104863 times.
✗ Branch 98 not taken.
✓ Branch 99 taken 8144 times.
✓ Branch 100 taken 416 times.
✗ Branch 101 not taken.
✗ Branch 102 not taken.
✓ Branch 103 taken 21216 times.
✓ Branch 104 taken 34799 times.
✓ Branch 105 taken 13591 times.
✓ Branch 106 taken 22282 times.
✗ Branch 107 not taken.
✓ Branch 108 taken 35873 times.
✓ Branch 109 taken 46775 times.
✓ Branch 110 taken 27505 times.
✓ Branch 111 taken 3061 times.
✗ Branch 112 not taken.
✓ Branch 113 taken 5307 times.
✓ Branch 114 taken 81735 times.
✗ Branch 115 not taken.
✓ Branch 116 taken 4394 times.
✓ Branch 117 taken 3061 times.
✗ Branch 118 not taken.
✓ Branch 119 taken 1052 times.
✓ Branch 120 taken 1052 times.
✓ Branch 121 taken 5 times.
✓ Branch 122 taken 53102 times.
✗ Branch 123 not taken.
✓ Branch 124 taken 30 times.
✓ Branch 125 taken 3 times.
✓ Branch 126 taken 6 times.
✗ Branch 127 not taken.
✓ Branch 128 taken 1041 times.
✗ Branch 129 not taken.
✓ Branch 130 taken 1066 times.
✓ Branch 131 taken 1071 times.
✓ Branch 132 taken 3 times.
✓ Branch 133 taken 34878 times.
✓ Branch 134 taken 34878 times.
✓ Branch 135 taken 18230 times.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✗ Branch 138 not taken.
✗ Branch 139 not taken.
✓ Branch 140 taken 54 times.
✓ Branch 141 taken 1 times.
✓ Branch 142 taken 26 times.
✗ Branch 143 not taken.
✓ Branch 144 taken 27 times.
✗ Branch 145 not taken.
✓ Branch 146 taken 4 times.
✓ Branch 147 taken 49 times.
✗ Branch 148 not taken.
✗ Branch 149 not taken.
✗ Branch 150 not taken.
✗ Branch 151 not taken.
✗ Branch 152 not taken.
✗ Branch 153 not taken.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 156 not taken.
✗ Branch 157 not taken.
✓ Branch 158 taken 14561 times.
✓ Branch 159 taken 7026 times.
✗ Branch 160 not taken.
✓ Branch 161 taken 13 times.
✗ Branch 162 not taken.
✓ Branch 163 taken 9499 times.
✓ Branch 164 taken 2233 times.
✗ Branch 165 not taken.
✓ Branch 166 taken 57 times.
✓ Branch 167 taken 5 times.
✗ Branch 168 not taken.
✓ Branch 169 taken 21824 times.
✓ Branch 170 taken 3015 times.
✗ Branch 171 not taken.
✓ Branch 172 taken 213 times.
✗ Branch 173 not taken.
✓ Branch 174 taken 122 times.
✗ Branch 175 not taken.
✗ Branch 176 not taken.
✓ Branch 177 taken 1963 times.
✗ Branch 178 not taken.
✗ Branch 179 not taken.
✓ Branch 180 taken 2385 times.
✗ Branch 181 not taken.
✗ Branch 182 not taken.
✗ Branch 183 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 186 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 189 not taken.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✗ Branch 192 not taken.
✓ Branch 193 taken 116 times.
✓ Branch 194 taken 18954 times.
✓ Branch 195 taken 8 times.
✓ Branch 196 taken 28914 times.
✗ Branch 197 not taken.
✓ Branch 198 taken 28620 times.
✗ Branch 199 not taken.
✓ Branch 200 taken 8797 times.
✓ Branch 201 taken 702 times.
✗ Branch 202 not taken.
✗ Branch 203 not taken.
✓ Branch 204 taken 6732 times.
✓ Branch 205 taken 2767 times.
✓ Branch 206 taken 817 times.
✓ Branch 207 taken 8849 times.
✓ Branch 208 taken 817 times.
✓ Branch 209 taken 525 times.
✓ Branch 210 taken 27 times.
✓ Branch 211 taken 13 times.
✗ Branch 212 not taken.
✓ Branch 213 taken 9020 times.
✓ Branch 214 taken 26 times.
✗ Branch 215 not taken.
✓ Branch 216 taken 620 times.
✓ Branch 217 taken 2232 times.
✓ Branch 218 taken 1 times.
✗ Branch 219 not taken.
✓ Branch 220 taken 2232 times.
✓ Branch 221 taken 2232 times.
✗ Branch 222 not taken.
✓ Branch 223 taken 1 times.
✗ Branch 224 not taken.
✗ Branch 225 not taken.
✗ Branch 226 not taken.
✗ Branch 227 not taken.
✗ Branch 228 not taken.
✗ Branch 229 not taken.
✗ Branch 230 not taken.
✗ Branch 231 not taken.
✗ Branch 232 not taken.
✗ Branch 233 not taken.
✗ Branch 234 not taken.
✗ Branch 235 not taken.
✗ Branch 236 not taken.
✗ Branch 237 not taken.
✓ Branch 238 taken 1 times.
✗ Branch 239 not taken.
✓ Branch 240 taken 57 times.
✗ Branch 241 not taken.
✗ Branch 242 not taken.
✗ Branch 243 not taken.
✓ Branch 244 taken 3 times.
✗ Branch 245 not taken.
✓ Branch 246 taken 2 times.
✗ Branch 247 not taken.
✗ Branch 248 not taken.
✓ Branch 249 taken 21328 times.
✓ Branch 250 taken 496 times.
✗ Branch 251 not taken.
✓ Branch 252 taken 1171 times.
✓ Branch 253 taken 26 times.
✓ Branch 254 taken 21211 times.
✓ Branch 255 taken 1562 times.
✓ Branch 256 taken 118 times.
✗ Branch 257 not taken.
✓ Branch 258 taken 118 times.
✗ Branch 259 not taken.
✓ Branch 260 taken 246401 times.
✗ Branch 261 not taken.
✓ Branch 262 taken 133 times.
✗ Branch 263 not taken.
✗ Branch 264 not taken.
✗ Branch 265 not taken.
✗ Branch 266 not taken.
✗ Branch 267 not taken.
✓ Branch 268 taken 118 times.
✗ Branch 269 not taken.
✗ Branch 270 not taken.
✗ Branch 271 not taken.
✓ Branch 272 taken 246652 times.
✓ Branch 273 taken 433369 times.
✓ Branch 274 taken 2918 times.
✓ Branch 275 taken 18364 times.
✓ Branch 276 taken 56 times.
✓ Branch 277 taken 7 times.
✓ Branch 278 taken 904 times.
✓ Branch 279 taken 20378 times.
✓ Branch 280 taken 22965 times.
✓ Branch 281 taken 20385 times.
✓ Branch 282 taken 147491 times.
✓ Branch 283 taken 91794 times.
✓ Branch 284 taken 22530 times.
✓ Branch 285 taken 261815 times.
✓ Branch 286 taken 122 times.
✓ Branch 287 taken 43318 times.
✓ Branch 288 taken 261815 times.
✓ Branch 289 taken 400 times.
✓ Branch 290 taken 155 times.
✓ Branch 291 taken 21345 times.
✓ Branch 292 taken 13686 times.
✓ Branch 293 taken 40400 times.
✓ Branch 294 taken 280242 times.
✓ Branch 295 taken 1611 times.
✓ Branch 296 taken 788 times.
✓ Branch 297 taken 4776 times.
✓ Branch 298 taken 424 times.
✓ Branch 299 taken 113 times.
✓ Branch 300 taken 280242 times.
✗ Branch 301 not taken.
✓ Branch 302 taken 276757 times.
✓ Branch 303 taken 2010 times.
✓ Branch 304 taken 761 times.
✓ Branch 305 taken 714 times.
✓ Branch 306 taken 256656 times.
✓ Branch 307 taken 11606 times.
✓ Branch 308 taken 8495 times.
✓ Branch 309 taken 255040 times.
✓ Branch 310 taken 669 times.
✓ Branch 311 taken 947 times.
✓ Branch 312 taken 242815 times.
✓ Branch 313 taken 5923 times.
✓ Branch 314 taken 961 times.
✓ Branch 315 taken 3889 times.
✓ Branch 316 taken 1452 times.
✓ Branch 317 taken 238137 times.
✓ Branch 318 taken 3677 times.
✓ Branch 319 taken 936 times.
✗ Branch 320 not taken.
✓ Branch 321 taken 65 times.
✓ Branch 322 taken 235421 times.
✓ Branch 323 taken 2716 times.
✓ Branch 324 taken 235356 times.
✓ Branch 325 taken 65 times.
✓ Branch 326 taken 235289 times.
✓ Branch 327 taken 67 times.
✓ Branch 328 taken 230381 times.
✓ Branch 329 taken 4908 times.
✓ Branch 330 taken 228475 times.
✓ Branch 331 taken 1906 times.
✓ Branch 332 taken 224530 times.
✓ Branch 333 taken 3945 times.
✓ Branch 334 taken 220585 times.
✓ Branch 335 taken 2 times.
✓ Branch 336 taken 202506 times.
✓ Branch 337 taken 13498 times.
✓ Branch 338 taken 938 times.
✓ Branch 339 taken 153 times.
✓ Branch 340 taken 41 times.
✓ Branch 341 taken 85 times.
✓ Branch 342 taken 17 times.
✓ Branch 343 taken 114 times.
✗ Branch 344 not taken.
✓ Branch 345 taken 86 times.
✓ Branch 346 taken 1510 times.
✓ Branch 347 taken 15 times.
✓ Branch 348 taken 1617 times.
✓ Branch 349 taken 5 times.
✗ Branch 350 not taken.
✓ Branch 351 taken 202506 times.
✓ Branch 352 taken 24285 times.
✓ Branch 353 taken 17470 times.
✓ Branch 354 taken 39 times.
✓ Branch 355 taken 39 times.
✗ Branch 356 not taken.
✗ Branch 357 not taken.
✗ Branch 358 not taken.
✗ Branch 359 not taken.
✗ Branch 360 not taken.
✗ Branch 361 not taken.
✗ Branch 362 not taken.
✗ Branch 363 not taken.
✓ Branch 364 taken 81190 times.
✓ Branch 365 taken 724 times.
✓ Branch 366 taken 3104 times.
✓ Branch 367 taken 1689 times.
✓ Branch 368 taken 4780 times.
✓ Branch 369 taken 151 times.
✓ Branch 370 taken 156 times.
✗ Branch 371 not taken.
✗ Branch 372 not taken.
✓ Branch 373 taken 1689 times.
✓ Branch 374 taken 1689 times.
✓ Branch 375 taken 2467 times.
✓ Branch 376 taken 2313 times.
✗ Branch 377 not taken.
✗ Branch 378 not taken.
✗ Branch 379 not taken.
✓ Branch 380 taken 151 times.
✓ Branch 381 taken 800 times.
✓ Branch 382 taken 151 times.
7455512 switch (yyrule)
2871 {
2872 case 2: /* Init: Global_List */
2873 #line 307 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2874 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2875 #line 2876 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2876 break;
2877
2878 case 3: /* Global_List: Global_List Global_Statement */
2879 #line 313 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2880 {
2881 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
2882 root->addDeclaration(declaration);}
2883 #line 2884 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2884 break;
2885
2886 case 4: /* Global_List: Global_List Option */
2887 #line 316 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2888 {
2889 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
2890 root->options.push_back(option);
2891 if (root->hasDeclarations())
2892 yywarn("WARNING: Options should come before everything else.");}
2893 #line 2894 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2894 break;
2895
2896 case 5: /* Global_List: %empty */
2897 #line 321 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2898 {root.reset(new ASTFile(noloc));}
2899 #line 2900 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2900 break;
2901
2902 case 6: /* Global_Statement: Import */
2903 #line 325 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2904 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2905 #line 2906 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2906 break;
2907
2908 case 7: /* Global_Statement: IncludePath */
2909 #line 326 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2910 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2911 #line 2912 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2912 break;
2913
2914 case 8: /* Global_Statement: Namespace */
2915 #line 327 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2916 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2917 #line 2918 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2918 break;
2919
2920 case 9: /* Global_Statement: DataTypeDef SEMICOLON */
2921 #line 328 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2922 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2923 #line 2924 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2924 break;
2925
2926 case 10: /* Global_Statement: ScriptTypeDef SEMICOLON */
2927 #line 329 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2928 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2929 #line 2930 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2930 break;
2931
2932 case 11: /* Global_Statement: Data SEMICOLON */
2933 #line 330 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2934 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2935 #line 2936 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2936 break;
2937
2938 case 12: /* Global_Statement: Function */
2939 #line 331 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2940 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2941 #line 2942 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2942 break;
2943
2944 case 13: /* Global_Statement: Script */
2945 #line 332 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2946 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2947 #line 2948 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2948 break;
2949
2950 case 14: /* Global_Statement: Annotated_Script */
2951 #line 333 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2952 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2953 #line 2954 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2954 break;
2955
2956 case 15: /* Global_Statement: Class */
2957 #line 334 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2958 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2959 #line 2960 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2960 break;
2961
2962 case 16: /* Global_Statement: DataEnum SEMICOLON */
2963 #line 335 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2964 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2965 #line 2966 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2966 break;
2967
2968 case 17: /* Global_Statement: Using SEMICOLON */
2969 #line 336 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2970 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2971 #line 2972 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2972 break;
2973
2974 case 18: /* Global_Statement: AlwaysUsing SEMICOLON */
2975 #line 337 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2976 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2977 #line 2978 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2978 break;
2979
2980 case 19: /* Global_Statement: Statement_Assert SEMICOLON */
2981 #line 338 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2982 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2983 #line 2984 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2984 break;
2985
2986 case 20: /* Global_Statement: EXPECTERROR LPAREN Expression_Constant RPAREN Global_Statement */
2987 #line 339 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2988 {
2989 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
2990 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
2991 declaration->compileErrorCatches.push_back(errorId);
2992 (*yyvalp) = declaration;}
2993 #line 2994 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
2994 break;
2995
2996 case 21: /* Namespace: NAMESPACE Scoperes_Identifier_List LBRACE RBRACE */
2997 #line 350 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
2998 {
2999 ASTExprIdentifier* idens = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3000 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3001 namesp->identifier = idens->componentNodes.front()->clone();
3002 if (!ParserHelper::isValidIdentifier(namesp->getName()))
3003 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,namesp->getName().c_str());
3004 auto& components = idens->componentNodes;
3005 if(components.size() > 1)
3006 for(auto it = components.begin() + 1;
3007 it != components.end(); ++it)
3008 {
3009 ASTNamespace* subsp = new ASTNamespace((*yylocp));
3010 subsp->identifier = (*it)->clone();
3011 if (!ParserHelper::isValidIdentifier(subsp->getName()))
3012 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,subsp->getName().c_str());
3013 namesp->namespaces.push_back(subsp);
3014 }
3015 delete idens;
3016 (*yyvalp) = namesp;
3017 }
3018 #line 3019 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3019 break;
3020
3021 case 22: /* Namespace: NAMESPACE Scoperes_Identifier_List LBRACE Namespace_Block_List RBRACE */
3022 #line 370 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3023 {
3024 ASTExprIdentifier* idens = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3025 auto& components = idens->componentNodes;
3026 int32_t size = components.size();
3027 if(size == 1)
3028 {
3029 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3030 namesp->identifier = components.front()->clone();
3031 namesp->location = (*yylocp);
3032 delete idens;
3033 (*yyvalp) = namesp;
3034 }
3035 else if(size == 2)
3036 {
3037 ASTNamespace* top = new ASTNamespace((*yylocp));
3038 top->identifier = components.front()->clone();
3039 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3040 namesp->identifier = components[1]->clone();
3041 namesp->location = (*yylocp);
3042 top->namespaces.push_back(namesp);
3043 delete idens;
3044 (*yyvalp) = top;
3045 }
3046 else
3047 {
3048 ASTNamespace* top = new ASTNamespace((*yylocp));
3049 top->identifier = components.front()->clone();
3050 ASTNamespace* temp = top;
3051 ASTNamespace* temp2;
3052 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3053 namesp->identifier = components.back()->clone();
3054 components.pop_back();
3055 namesp->location = (*yylocp);
3056 for(auto it = components.begin() + 1;
3057 it != components.end(); ++it)
3058 {
3059 temp2 = new ASTNamespace((*yylocp));
3060 temp->identifier = (*it)->clone();
3061 temp->namespaces.push_back(temp2);
3062 temp = temp2;
3063 }
3064 temp->namespaces.push_back(namesp);
3065 delete idens;
3066 (*yyvalp) = top;
3067 }
3068
3069 auto ns = (ASTNamespace*)(*yyvalp);
3070 if (!ParserHelper::isValidIdentifier(ns->getName()))
3071 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,ns->getName().c_str());
3072 }
3073 #line 3074 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3074 break;
3075
3076 case 23: /* Namespace_Block_List: Namespace_Block_List Namespace_Statement */
3077 #line 423 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3078 {
3079 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3080 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3081 namesp->addDeclaration(*declaration);
3082 namesp->location = (*yylocp);
3083 (*yyvalp) = namesp;}
3084 #line 3085 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3085 break;
3086
3087 case 24: /* Namespace_Block_List: Namespace_Block_List Option */
3088 #line 429 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3089 {
3090 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3091 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3092 namesp->options.push_back(option);
3093 namesp->location = (*yylocp);
3094 (*yyvalp) = namesp;
3095 if (!namesp->variables.empty()
3096 || !namesp->functions.empty()
3097 || !namesp->dataTypes.empty()
3098 || !namesp->scriptTypes.empty()) {
3099 yywarn("WARNING: Options should come before everything else.");}}
3100 #line 3101 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3101 break;
3102
3103 case 25: /* Namespace_Block_List: Namespace_Statement */
3104 #line 440 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3105 {
3106 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3107 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3108 namesp->addDeclaration(*declaration);
3109 (*yyvalp) = namesp;}
3110 #line 3111 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3111 break;
3112
3113 case 26: /* Namespace_Block_List: Option */
3114 #line 445 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3115 {
3116 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3117 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3118 namesp->options.push_back(option);
3119 (*yyvalp) = namesp;}
3120 #line 3121 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3121 break;
3122
3123 case 27: /* Namespace_Statement: Namespace */
3124 #line 453 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3125 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3126 #line 3127 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3127 break;
3128
3129 case 28: /* Namespace_Statement: DataTypeDef SEMICOLON */
3130 #line 454 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3131 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3132 #line 3133 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3133 break;
3134
3135 case 29: /* Namespace_Statement: ScriptTypeDef SEMICOLON */
3136 #line 455 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3137 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3138 #line 3139 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3139 break;
3140
3141 case 30: /* Namespace_Statement: Data SEMICOLON */
3142 #line 456 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3143 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3144 #line 3145 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3145 break;
3146
3147 case 31: /* Namespace_Statement: Function */
3148 #line 457 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3149 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3150 #line 3151 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3151 break;
3152
3153 case 32: /* Namespace_Statement: Script */
3154 #line 458 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3155 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3156 #line 3157 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3157 break;
3158
3159 case 33: /* Namespace_Statement: Annotated_Script */
3160 #line 459 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3161 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3162 #line 3163 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3163 break;
3164
3165 case 34: /* Namespace_Statement: Class */
3166 #line 460 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3167 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3168 #line 3169 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3169 break;
3170
3171 case 35: /* Namespace_Statement: DataEnum SEMICOLON */
3172 #line 461 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3173 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3174 #line 3175 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3175 break;
3176
3177 case 36: /* Namespace_Statement: Using SEMICOLON */
3178 #line 462 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3179 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3180 #line 3181 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3181 break;
3182
3183 case 37: /* Namespace_Statement: Statement_Assert SEMICOLON */
3184 #line 463 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3185 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3186 #line 3187 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3187 break;
3188
3189 case 38: /* Namespace_Statement: EXPECTERROR LPAREN Expression_Constant RPAREN Namespace_Statement */
3190 #line 464 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3191 {
3192 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3193 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3194 declaration->compileErrorCatches.push_back(errorId);
3195 (*yyvalp) = declaration;}
3196 #line 3197 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3197 break;
3198
3199 case 39: /* Using: USING NAMESPACE Scoperes_Identifier_List */
3200 #line 474 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3201 {
3202 ASTExprIdentifier* idlist = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3203 (*yyvalp) = new ASTUsingDecl(idlist, (*yylocp));
3204 }
3205 #line 3206 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3206 break;
3207
3208 case 40: /* AlwaysUsing: ALWAYS USING NAMESPACE Scoperes_Identifier_List */
3209 #line 480 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3210 {
3211 ASTExprIdentifier* idlist = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3212 (*yyvalp) = new ASTUsingDecl(idlist, (*yylocp), true);
3213 }
3214 #line 3215 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3215 break;
3216
3217 case 41: /* Import: IMPORT IMPORTSTRING */
3218 #line 489 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3219 {
3220 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3221 (*yyvalp) = new ASTImportDecl(str->getValue(), (*yylocp));
3222 delete str;}
3223 #line 3224 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3224 break;
3225
3226 case 42: /* Import: HASH INCLUDE IMPORTSTRING */
3227 #line 493 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3228 {
3229 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3230 (*yyvalp) = new ASTImportDecl(str->getValue(), (*yylocp), true);
3231 delete str;}
3232 #line 3233 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3233 break;
3234
3235 case 43: /* Import: HASH INCLUDEIF LPAREN Expression_Constant COMMA IMPORTSTRING RPAREN */
3236 #line 497 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3237 {
3238 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3239 ASTExprConst* cond = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3240 ASTImportDecl* decl = new ASTImportDecl(str->getValue(), (*yylocp), true);
3241 (*yyvalp) = new ASTImportCondDecl(cond, decl, (*yylocp));
3242 delete str;}
3243 #line 3244 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3244 break;
3245
3246 case 44: /* IncludePath: HASH INCLUDEPATH IMPORTSTRING */
3247 #line 506 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3248 {
3249 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3250 (*yyvalp) = new ASTIncludePath(str->getValue(), (*yylocp));
3251 delete str;}
3252 #line 3253 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3253 break;
3254
3255 case 45: /* Option: HASH OPTION IDENTIFIER Expression_Constant ENDLINE */
3256 #line 516 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3257 {
3258 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3259 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3260 (*yyvalp) = new ASTSetOption(name->getValue(), expr, (*yylocp));
3261 delete name;}
3262 #line 3263 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3263 break;
3264
3265 case 46: /* Option: HASH OPTION IDENTIFIER Expression_Constant NEWLINE */
3266 #line 522 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3267 {
3268 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3269 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3270 (*yyvalp) = new ASTSetOption(name->getValue(), expr, (*yylocp));
3271 delete name;}
3272 #line 3273 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3273 break;
3274
3275 case 47: /* Option: HASH OPTION IDENTIFIER INHERIT ENDLINE */
3276 #line 527 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3277 {
3278 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3279 (*yyvalp) = new ASTSetOption(
3280 name->getValue(), CompileOptionSetting::Inherit, (*yylocp));
3281 delete name;}
3282 #line 3283 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3283 break;
3284
3285 case 48: /* Option: HASH OPTION IDENTIFIER INHERIT NEWLINE */
3286 #line 532 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3287 {
3288 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3289 (*yyvalp) = new ASTSetOption(
3290 name->getValue(), CompileOptionSetting::Inherit, (*yylocp));
3291 delete name;}
3292 #line 3293 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3293 break;
3294
3295 case 49: /* Option: HASH OPTION IDENTIFIER DEFAULT ENDLINE */
3296 #line 537 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3297 {
3298 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3299 (*yyvalp) = new ASTSetOption(
3300 name->getValue(), CompileOptionSetting::Default, (*yylocp));
3301 delete name;}
3302 #line 3303 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3303 break;
3304
3305 case 50: /* Option: HASH OPTION IDENTIFIER DEFAULT NEWLINE */
3306 #line 542 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3307 {
3308 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3309 (*yyvalp) = new ASTSetOption(
3310 name->getValue(), CompileOptionSetting::Default, (*yylocp));
3311 delete name;}
3312 #line 3313 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3313 break;
3314
3315 case 51: /* Option: HASH OPTION DEFAULT Expression_Constant ENDLINE */
3316 #line 547 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3317 {
3318 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3319 (*yyvalp) = new ASTSetOption("default", expr, (*yylocp));}
3320 #line 3321 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3321 break;
3322
3323 case 52: /* Option: HASH OPTION DEFAULT Expression_Constant NEWLINE */
3324 #line 550 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3325 {
3326 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3327 (*yyvalp) = new ASTSetOption("default", expr, (*yylocp));}
3328 #line 3329 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3329 break;
3330
3331 case 53: /* Option: HASH OPTION DEFAULT INHERIT ENDLINE */
3332 #line 553 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3333 {
3334 (*yyvalp) = new ASTSetOption(
3335 "default", CompileOptionSetting::Inherit, (*yylocp));}
3336 #line 3337 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3337 break;
3338
3339 case 54: /* Option: HASH OPTION DEFAULT INHERIT NEWLINE */
3340 #line 556 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3341 {
3342 (*yyvalp) = new ASTSetOption(
3343 "default", CompileOptionSetting::Inherit, (*yylocp));}
3344 #line 3345 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3345 break;
3346
3347 case 55: /* Option: HASH OPTION DEFAULT DEFAULT ENDLINE */
3348 #line 559 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3349 {
3350 (*yyvalp) = new ASTSetOption(
3351 "default", CompileOptionSetting::Default, (*yylocp));}
3352 #line 3353 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3353 break;
3354
3355 case 56: /* Option: HASH OPTION DEFAULT DEFAULT NEWLINE */
3356 #line 562 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3357 {
3358 (*yyvalp) = new ASTSetOption(
3359 "default", CompileOptionSetting::Default, (*yylocp));}
3360 #line 3361 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3361 break;
3362
3363 case 57: /* Statement_Assert: CASSERT LPAREN Expression_Constant RPAREN */
3364 #line 571 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3365 {
3366 (*yyvalp) = new ASTAssert((ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, NULL, (*yylocp));
3367 }
3368 #line 3369 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3369 break;
3370
3371 case 58: /* Statement_Assert: CASSERT LPAREN Expression_Constant COMMA QuotedString RPAREN */
3372 #line 574 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3373 {
3374 (*yyvalp) = new ASTAssert((ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval, (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));
3375 }
3376 #line 3377 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3377 break;
3378
3379 case 59: /* DataTypeDef: StandardDataTypedef */
3380 #line 582 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3381 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3382 #line 3383 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3383 break;
3384
3385 case 60: /* DataTypeDef: EnumDataTypedef */
3386 #line 583 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3387 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3388 #line 3389 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3389 break;
3390
3391 case 61: /* StandardDataTypedef: TYPEDEF DataType IDENTIFIER */
3392 #line 586 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3393 {
3394 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3395 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3396 (*yyvalp) = new ASTDataTypeDef(type, name->getValue(), (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yyloc));
3397 delete name;}
3398 #line 3399 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3399 break;
3400
3401 case 62: /* EnumDataTypedef: ENUM IDENTIFIER LBRACE Enum_Block RBRACE */
3402 #line 593 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3403 {
3404 ASTDataEnum* en = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3405 ASTString* identifier = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3406 (*yyvalp) = new ASTCustomDataTypeDef(NULL, identifier->getValue(), en, (*yylocp));
3407 delete identifier;}
3408 #line 3409 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3409 break;
3410
3411 case 63: /* DataType: ZCONST DataType */
3412 #line 599 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3413 {
3414 ASTDataType* dtype = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3415 ++dtype->constant_; //Increment the number of `const` keywords. If >1, this will produce an error later.
3416 (*yyvalp) = dtype;
3417 }
3418 #line 3419 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3419 break;
3420
3421 case 64: /* DataType: ZAUTO */
3422 #line 605 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3423 {(*yyvalp) = new ASTDataType(DataType::ZAUTO, (*yylocp));}
3424 #line 3425 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3425 break;
3426
3427 case 65: /* DataType: TEMPLATE_T */
3428 #line 606 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3429 {(*yyvalp) = new ASTDataType(DataType::TEMPLATE_T, (*yylocp));}
3430 #line 3431 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3431 break;
3432
3433 case 66: /* DataType: TEMPLATE_T_ARR */
3434 #line 607 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3435 {(*yyvalp) = new ASTDataType(DataType::TEMPLATE_T_ARR, (*yylocp));}
3436 #line 3437 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3437 break;
3438
3439 case 67: /* DataType: ZVOID */
3440 #line 608 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3441 {(*yyvalp) = new ASTDataType(DataType::ZVOID, (*yylocp));}
3442 #line 3443 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3443 break;
3444
3445 case 68: /* DataType: UNTYPED */
3446 #line 609 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3447 {(*yyvalp) = new ASTDataType(DataType::UNTYPED, (*yylocp));}
3448 #line 3449 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3449 break;
3450
3451 case 69: /* DataType: ZBOOL */
3452 #line 610 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3453 {(*yyvalp) = new ASTDataType(DataType::BOOL, (*yylocp));}
3454 #line 3455 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3455 break;
3456
3457 case 70: /* DataType: ZFLOAT */
3458 #line 611 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3459 {(*yyvalp) = new ASTDataType(DataType::FLOAT, (*yylocp));}
3460 #line 3461 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3461 break;
3462
3463 case 71: /* DataType: ZCHAR */
3464 #line 612 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3465 {(*yyvalp) = new ASTDataType(DataType::CHAR, (*yylocp));}
3466 #line 3467 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3467 break;
3468
3469 case 72: /* DataType: ZLONG */
3470 #line 613 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3471 {(*yyvalp) = new ASTDataType(DataType::LONG, (*yylocp));}
3472 #line 3473 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3473 break;
3474
3475 case 73: /* DataType: ZRGB */
3476 #line 614 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3477 {(*yyvalp) = new ASTDataType(DataType::RGBDATA, (*yylocp));}
3478 #line 3479 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3479 break;
3480
3481 case 74: /* DataType: Identifier_List */
3482 #line 616 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3483 {
3484 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3485 std::string comment = std::move(iden->doc_comment);
3486 ASTDataType* datatype = new ASTDataType(new DataTypeUnresolved(iden), (*yylocp));
3487 datatype->doc_comment = std::move(comment);
3488 (*yyvalp) = datatype;
3489 }
3490 #line 3491 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3491 break;
3492
3493 case 75: /* ScriptTypeDef: SCRIPT TYPEDEF Script_Type IDENTIFIER */
3494 #line 625 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3495 {
3496 ASTScriptType* oldType = static_cast<ASTScriptType*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval);
3497 ASTString* newName = static_cast<ASTString*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
3498 (*yyvalp) = new ASTScriptTypeDef(oldType, newName->getValue(), (*yylocp));
3499 delete newName;}
3500 #line 3501 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3501 break;
3502
3503 case 76: /* Data: INTERNAL Data */
3504 #line 636 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3505 {
3506 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3507 if (list->internal)
3508 yyerrmsg("internal modifier used twice");
3509 list->internal = true;
3510 (*yyvalp) = list;}
3511 #line 3512 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3512 break;
3513
3514 case 77: /* Data: DataType Data_List */
3515 #line 642 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3516 {
3517 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3518 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3519 list->baseType = type;
3520 if (!type->doc_comment.empty())
3521 list->doc_comment = std::move(type->doc_comment);
3522 list->location = (*yylocp);
3523 (*yyvalp) = list;}
3524 #line 3525 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3525 break;
3526
3527 case 78: /* Data_List: Data_List COMMA Data_Element */
3528 #line 653 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3529 {
3530 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3531 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3532 list->addDeclaration(element);
3533 list->location = (*yylocp);
3534 (*yyvalp) = list;}
3535 #line 3536 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3536 break;
3537
3538 case 79: /* Data_List: Data_Element */
3539 #line 659 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3540 {
3541 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3542 ASTDataDeclList* list = new ASTDataDeclList((*yylocp));
3543 list->addDeclaration(element);
3544 if (!element->doc_comment.empty())
3545 list->doc_comment = std::move(element->doc_comment);
3546 (*yyvalp) = list;}
3547 #line 3548 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3548 break;
3549
3550 case 80: /* Data_Element: Data_Element_Array_List ASSIGN Expression */
3551 #line 669 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3552 {
3553 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3554 ASTExpr* initializer = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3555 element->setInitializer(initializer);
3556 element->location = (*yylocp);
3557 (*yyvalp) = element;}
3558 #line 3559 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3559 break;
3560
3561 case 81: /* Data_Element: Data_Element_Array_List */
3562 #line 675 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3563 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3564 #line 3565 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3565 break;
3566
3567 case 82: /* Data_Element_Array_List: Data_Element_Array_List Data_Element_Array_Element */
3568 #line 679 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3569 {
3570 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3571 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3572 element->extraArrays.push_back(extraArray);
3573 element->location = (*yylocp);
3574 (*yyvalp) = element;}
3575 #line 3576 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3576 break;
3577
3578 case 83: /* Data_Element_Array_List: Identifier */
3579 #line 685 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3580 {
3581 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3582 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3583 element->identifier = name;
3584 if (!ParserHelper::isValidIdentifier(name->getValue()))
3585 yyerrmsg("ERROR: invalid identifier",name->location.first_line,name->location.first_column,name->getValue().c_str());
3586 element->doc_comment = std::move(name->doc_comment);
3587 if (!first_identifier_for_line) first_identifier_for_line = element;
3588 (*yyvalp) = element;
3589 }
3590 #line 3591 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3591 break;
3592
3593 case 84: /* Single_Data_req_assign: DataType Identifier ASSIGN Expression */
3594 #line 698 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3595 {
3596 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3597 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3598 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3599 element->identifier = name;
3600 ASTExpr* initializer = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3601 element->setInitializer(initializer);
3602 element->baseType = type;
3603 element->location = (*yylocp);
3604 (*yyvalp) = element;}
3605 #line 3606 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3606 break;
3607
3608 case 85: /* Data_Element_Array_Element: LBRACKET Data_Element_Array_Element_Size_List RBRACKET */
3609 #line 711 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3610 {
3611 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3612 extraArray->location = (*yylocp);
3613 (*yyvalp) = extraArray;}
3614 #line 3615 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3615 break;
3616
3617 case 86: /* Data_Element_Array_Element: LBRACKET RBRACKET */
3618 #line 715 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3619 {(*yyvalp) = new ASTDataDeclExtraArray((*yylocp));}
3620 #line 3621 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3621 break;
3622
3623 case 87: /* Data_Element_Array_Element_Size_List: Data_Element_Array_Element_Size_List COMMA Expression_Constant */
3624 #line 719 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3625 {
3626 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3627 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3628 extraArray->dimensions.push_back(size);
3629 extraArray->location = (*yylocp);
3630 (*yyvalp) = extraArray;}
3631 #line 3632 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3632 break;
3633
3634 case 88: /* Data_Element_Array_Element_Size_List: Expression_Constant */
3635 #line 725 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3636 {
3637 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3638 ASTDataDeclExtraArray* extraArray = new ASTDataDeclExtraArray((*yylocp));
3639 extraArray->dimensions.push_back(size);
3640 (*yyvalp) = extraArray;}
3641 #line 3642 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3642 break;
3643
3644 case 89: /* Function: CONSTEXPR Function */
3645 #line 737 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3646 {
3647 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3648 if(func->getFlag(FUNCFLAG_CONSTEXPR))
3649 {
3650 func->setFlag(FUNCFLAG_INVALID);
3651 func->invalidMsg += " Duplicate `constexpr`.";
3652 }
3653 func->setFlag(FUNCFLAG_CONSTEXPR);
3654 (*yyvalp) = func;
3655 }
3656 #line 3657 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3657 break;
3658
3659 case 90: /* Function: STATIC Function */
3660 #line 748 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3661 {
3662 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3663 if(func->getFlag(FUNCFLAG_STATIC))
3664 {
3665 func->setFlag(FUNCFLAG_INVALID);
3666 func->invalidMsg += " Duplicate `static`.";
3667 }
3668 else if(func->getFlag(FUNCFLAG_DESTRUCTOR|FUNCFLAG_CONSTRUCTOR))
3669 {
3670 func->setFlag(FUNCFLAG_INVALID);
3671 func->invalidMsg += " Constructors and destructors cannot be static.";
3672 }
3673 else func->setFlag(FUNCFLAG_STATIC);
3674 (*yyvalp) = func;
3675 }
3676 #line 3677 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3677 break;
3678
3679 case 91: /* Function: INLINE Function */
3680 #line 764 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3681 {
3682 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3683 if(func->getFlag(FUNCFLAG_INLINE))
3684 {
3685 func->setFlag(FUNCFLAG_INVALID);
3686 func->invalidMsg += " Duplicate `inline`.";
3687 }
3688 else func->setFlag(FUNCFLAG_INLINE);
3689 (*yyvalp) = func;
3690 }
3691 #line 3692 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3692 break;
3693
3694 case 92: /* Function: INTERNAL Function */
3695 #line 775 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3696 {
3697 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3698 if(func->getFlag(FUNCFLAG_INTERNAL))
3699 {
3700 func->setFlag(FUNCFLAG_INVALID);
3701 func->invalidMsg += " Duplicate `internal`.";
3702 }
3703 if(func->block)
3704 {
3705 func->setFlag(FUNCFLAG_INVALID);
3706 func->invalidMsg += " Internal function must not have a body.";
3707 }
3708 func->setFlag(FUNCFLAG_INTERNAL);
3709 func->prototype = false;
3710 (*yyvalp) = func;
3711 }
3712 #line 3713 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3713 break;
3714
3715 case 93: /* Function: DataType Function_Typeless */
3716 #line 791 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3717 {
3718 ASTDataType* returnType = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3719 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3720 if (!returnType->doc_comment.empty())
3721 func->doc_comment = std::move(returnType->doc_comment);
3722 func->returnType = returnType;
3723 (*yyvalp) = func;}
3724 #line 3725 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3725 break;
3726
3727 case 94: /* Function_Typeless: Function_Heading Statement_Block */
3728 #line 802 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3729 {
3730 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3731 func->block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3732 (*yyvalp) = func;}
3733 #line 3734 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3734 break;
3735
3736 case 95: /* Function_Typeless: Function_Heading SEMICOLON */
3737 #line 806 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3738 {
3739 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3740 func->prototype = true;
3741 func->defaultReturn = new ASTExprConst(new ASTExprCast(new ASTDataType(DataType::CUNTYPED, (*yylocp)), new ASTNumberLiteral(new ASTFloat(0, 0, (*yylocp)), (*yylocp)), (*yylocp)), (*yylocp));
3742 (*yyvalp) = func;}
3743 #line 3744 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3744 break;
3745
3746 case 96: /* Function_Typeless: Function_Heading COLON DEFAULT Expression_Constant SEMICOLON */
3747 #line 811 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3748 {
3749 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3750 func->prototype = true;
3751 func->defaultReturn = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3752 (*yyvalp) = func;}
3753 #line 3754 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3754 break;
3755
3756 case 97: /* Function_Heading: Identifier_List LPAREN Function_Parameters_List RPAREN */
3757 #line 819 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3758 {
3759 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3760 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3761 func->identifier = iden;
3762 func->location = (*yylocp);
3763 func->doc_comment = std::move(iden->doc_comment);
3764 (*yyvalp) = func;}
3765 #line 3766 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3766 break;
3767
3768 case 98: /* Function_Parameters_List: Function_Parameters_Element COMMA Function_Parameters_List */
3769 #line 829 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3770 {
3771 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3772 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3773 push_front(func->parameters, param);
3774 func->location = (*yylocp);
3775 (*yyvalp) = func;}
3776 #line 3777 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3777 break;
3778
3779 case 99: /* Function_Parameters_List: Function_Parameters_Element */
3780 #line 835 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3781 {
3782 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3783 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3784 push_front(func->parameters, param);
3785 (*yyvalp) = func;}
3786 #line 3787 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3787 break;
3788
3789 case 100: /* Function_Parameters_List: Function_OptParams_List */
3790 #line 840 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3791 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3792 #line 3793 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3793 break;
3794
3795 case 101: /* Function_Parameters_List: Function_VarArg_Element */
3796 #line 841 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3797 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3798 #line 3799 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3799 break;
3800
3801 case 102: /* Function_Parameters_List: %empty */
3802 #line 842 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3803 {(*yyvalp) = new ASTFuncDecl((*yylocp));}
3804 #line 3805 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3805 break;
3806
3807 case 103: /* Function_Parameters_Element: DataType Identifier */
3808 #line 846 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3809 {
3810 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3811 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3812 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3813 element->identifier = name;
3814 element->baseType = type;
3815 (*yyvalp) = element;}
3816 #line 3817 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3817 break;
3818
3819 case 104: /* Function_Parameters_Bracket_Element: DataType LBRACKET RBRACKET Identifier */
3820 #line 855 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3821 {
3822 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3823 type->becomeArray = true;
3824 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3825 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3826 element->identifier = name;
3827 element->baseType = type;
3828 (*yyvalp) = element;}
3829 #line 3830 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3830 break;
3831
3832 case 105: /* Function_OptParams_List: Function_Parameters_Element ASSIGN Expression_Constant COMMA Function_OptParams_List */
3833 #line 866 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3834 {
3835 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3836 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3837 ASTExprConst* cval = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3838 push_front(func->parameters, param);
3839 push_front(func->optparams, cval);
3840 func->location = (*yylocp);
3841 (*yyvalp) = func;}
3842 #line 3843 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3843 break;
3844
3845 case 106: /* Function_OptParams_List: Function_Parameters_Element ASSIGN Expression_Constant */
3846 #line 874 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3847 {
3848 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3849 ASTExprConst* cval = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3850 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3851 push_front(func->parameters, param);
3852 push_front(func->optparams, cval);
3853 (*yyvalp) = func;}
3854 #line 3855 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3855 break;
3856
3857 case 107: /* Function_VarArg_Element: RANGE Function_Parameters_Bracket_Element */
3858 #line 884 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3859 {
3860 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3861 push_front(func->parameters, (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
3862 func->setFlag(FUNCFLAG_VARARGS);
3863 (*yyvalp) = func;}
3864 #line 3865 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3865 break;
3866
3867 case 108: /* Class_Ident: IDENTIFIER */
3868 #line 893 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3869 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3870 #line 3871 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3871 break;
3872
3873 case 109: /* Class: ZCLASS Class_Ident Class_Block */
3874 #line 896 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3875 {
3876 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3877 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3878 user_class->location = (*yylocp);
3879 user_class->identifier = name;
3880 user_class->doc_comment = std::move(name->doc_comment);
3881 if (!first_identifier_for_line) first_identifier_for_line = user_class;
3882 (*yyvalp) = user_class;}
3883 #line 3884 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3884 break;
3885
3886 case 110: /* Class_Block: LBRACE Class_Block_List RBRACE */
3887 #line 907 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3888 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3889 #line 3890 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3890 break;
3891
3892 case 111: /* Class_Block: LBRACE RBRACE */
3893 #line 908 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3894 {(*yyvalp) = new ASTClass((*yylocp));}
3895 #line 3896 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3896 break;
3897
3898 case 112: /* Class_Block_List: Class_Block_List Class_Block_Element */
3899 #line 912 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3900 {
3901 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3902 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3903 user_class->addDeclaration(*declaration);
3904 user_class->location = (*yylocp);
3905 (*yyvalp) = user_class;}
3906 #line 3907 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3907 break;
3908
3909 case 113: /* Class_Block_List: Class_Block_List Option */
3910 #line 918 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3911 {
3912 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3913 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3914 user_class->options.push_back(option);
3915 user_class->location = (*yylocp);
3916 (*yyvalp) = user_class;
3917 if (!user_class->variables.empty()
3918 || !user_class->functions.empty()
3919 || !user_class->types.empty()) {
3920 yywarn("WARNING: Options should come before everything else.");}}
3921 #line 3922 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3922 break;
3923
3924 case 114: /* Class_Block_List: Class_Block_List Class_Constructor */
3925 #line 928 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3926 {
3927 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3928 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3929 user_class->constructors.push_back(func);
3930 (*yyvalp) = user_class;}
3931 #line 3932 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3932 break;
3933
3934 case 115: /* Class_Block_List: Class_Block_List Class_Destructor */
3935 #line 933 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3936 {
3937 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3938 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3939 if(user_class->destructor)
3940 {
3941 auto const& loc = func->location;
3942 yyerrmsg("ERROR: Class can only have one destructor!",loc.first_line,loc.first_column,func->getName().c_str());
3943 delete func;
3944 }
3945 else user_class->destructor = func;
3946 (*yyvalp) = user_class;}
3947 #line 3948 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3948 break;
3949
3950 case 116: /* Class_Block_List: Class_Block_Element */
3951 #line 944 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3952 {
3953 ASTClass* user_class = new ASTClass((*yylocp));
3954 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3955 user_class->addDeclaration(*declaration);
3956 (*yyvalp) = user_class;}
3957 #line 3958 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3958 break;
3959
3960 case 117: /* Class_Block_List: Option */
3961 #line 949 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3962 {
3963 ASTClass* user_class = new ASTClass((*yylocp));
3964 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3965 user_class->options.push_back(option);
3966 (*yyvalp) = user_class;}
3967 #line 3968 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3968 break;
3969
3970 case 118: /* Class_Block_List: Class_Constructor */
3971 #line 954 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3972 {
3973 ASTClass* user_class = new ASTClass((*yylocp));
3974 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3975 user_class->constructors.push_back(func);
3976 (*yyvalp) = user_class;}
3977 #line 3978 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3978 break;
3979
3980 case 119: /* Class_Block_List: Class_Destructor */
3981 #line 959 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3982 {
3983 ASTClass* user_class = new ASTClass((*yylocp));
3984 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3985 if(user_class->destructor)
3986 {
3987 auto const& loc = func->location;
3988 yyerrmsg("ERROR: Class can only have one destructor!",loc.first_line,loc.first_column,func->getName().c_str());
3989 delete func;
3990 }
3991 else user_class->destructor = func;
3992 (*yyvalp) = user_class;}
3993 #line 3994 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
3994 break;
3995
3996 case 120: /* Class_Constructor: INTERNAL Class_Constructor */
3997 #line 973 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
3998 {
3999 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4000 if(func->getFlag(FUNCFLAG_INTERNAL))
4001 {
4002 func->setFlag(FUNCFLAG_INVALID);
4003 func->invalidMsg += " Duplicate `internal`.";
4004 }
4005 else func->setFlag(FUNCFLAG_INTERNAL);
4006 func->prototype = false;
4007 (*yyvalp) = func;}
4008 #line 4009 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4009 break;
4010
4011 case 121: /* Class_Constructor: Function_Typeless */
4012 #line 983 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4013 {
4014 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4015 ASTDataType* returnType = new ASTDataType(DataType::ZVOID, (*yylocp));
4016 func->returnType = returnType;
4017 func->setFlag(FUNCFLAG_CONSTRUCTOR|FUNCFLAG_CLASSFUNC);
4018 if(func->getFlag(FUNCFLAG_STATIC))
4019 {
4020 func->setFlag(FUNCFLAG_INVALID);
4021 func->invalidMsg += " Constructors and destructors cannot be static.";
4022 }
4023 (*yyvalp) = func;}
4024 #line 4025 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4025 break;
4026
4027 case 122: /* Class_Destructor: BITNOT Function_Typeless */
4028 #line 996 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4029 {
4030 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4031 ASTDataType* returnType = new ASTDataType(DataType::ZVOID, (*yylocp));
4032 func->returnType = returnType;
4033 func->setFlag(FUNCFLAG_DESTRUCTOR|FUNCFLAG_CLASSFUNC);
4034 if(func->getFlag(FUNCFLAG_STATIC))
4035 {
4036 func->setFlag(FUNCFLAG_INVALID);
4037 func->invalidMsg += " Constructors and destructors cannot be static.";
4038 }
4039 (*yyvalp) = func;}
4040 #line 4041 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4041 break;
4042
4043 case 123: /* Class_Data: Data */
4044 #line 1010 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4045 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4046 #line 4047 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4047 break;
4048
4049 case 124: /* Class_Block_Element: Class_Data SEMICOLON */
4050 #line 1014 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4051 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4052 #line 4053 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4053 break;
4054
4055 case 125: /* Class_Block_Element: Function */
4056 #line 1015 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4057 {
4058 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4059 func->setFlag(FUNCFLAG_CLASSFUNC);
4060 (*yyvalp) = func;}
4061 #line 4062 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4062 break;
4063
4064 case 126: /* Class_Block_Element: DataTypeDef SEMICOLON */
4065 #line 1019 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4066 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4067 #line 4068 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4068 break;
4069
4070 case 127: /* Class_Block_Element: DataEnum SEMICOLON */
4071 #line 1020 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4072 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4073 #line 4074 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4074 break;
4075
4076 case 128: /* Class_Block_Element: Using SEMICOLON */
4077 #line 1021 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4078 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4079 #line 4080 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4080 break;
4081
4082 case 129: /* Class_Block_Element: Statement_Assert SEMICOLON */
4083 #line 1022 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4084 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4085 #line 4086 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4086 break;
4087
4088 case 130: /* Class_Block_Element: EXPECTERROR LPAREN Expression_Constant RPAREN Class_Block_Element */
4089 #line 1023 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4090 {
4091 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4092 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4093 declaration->compileErrorCatches.push_back(errorId);
4094 (*yyvalp) = declaration;}
4095 #line 4096 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4096 break;
4097
4098 case 131: /* Annotated_Script: Annotation_List Script */
4099 #line 1034 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4100 {
4101 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4102 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4103 handle_annotations(list, [&](AnnotData& data)
4104 {
4105 auto& key = data.key;
4106 if(key == "Author")
4107 {
4108 if(annot_type_check(ANNTY_STR, data))
4109 {
4110 annot_trunc_str(data.unescaped_val, 255);
4111 script->metadata.author = data.unescaped_val;
4112 }
4113 return true;
4114 }
4115 else if(key == "InitScript")
4116 {
4117 if(annot_type_check(ANNTY_INT, data))
4118 script->init_weight = data.intval;
4119 return true;
4120 }
4121 else if((key.size() == 5 || key.size() == 6) && !key.compare(0,4,"Flag"))
4122 {
4123 byte c = key[4]-'0';
4124 if(key.size() == 6)
4125 c = (c*10)+key[5]-'0';
4126 if(c < 16)
4127 {
4128 if(annot_type_check(ANNTY_STR, data))
4129 {
4130 annot_trunc_str(data.unescaped_val, 255);
4131 script->metadata.usrflags[c] = data.unescaped_val;
4132 }
4133 return true;
4134 }
4135 }
4136 else if((key.size() == 9 || key.size() == 10) && !key.compare(0,8,"FlagHelp"))
4137 {
4138 byte c = key[8]-'0';
4139 if(key.size() == 10)
4140 c = (c*10)+key[9]-'0';
4141 if(c < 16)
4142 {
4143 if(annot_type_check(ANNTY_STR, data))
4144 {
4145 annot_trunc_str(data.val, 65535);
4146 script->metadata.usrflags_help[c] = data.val;
4147 }
4148 return true;
4149 }
4150 }
4151 else if(key.size() == 6 && !key.compare(0,5,"InitD"))
4152 {
4153 byte c = key[5]-'0';
4154 if(c < 8)
4155 {
4156 if(annot_type_check(ANNTY_STR, data))
4157 {
4158 annot_trunc_str(data.unescaped_val, 255);
4159 script->metadata.initd[c] = data.unescaped_val;
4160 }
4161 return true;
4162 }
4163 }
4164 else if(key.size() == 10)
4165 {
4166 byte c = key[9]-'0';
4167 if(!key.compare(0,9,"InitDType"))
4168 {
4169 if(c < 8)
4170 {
4171 if(annot_type_check(ANNTY_STR, data))
4172 {
4173 int8_t v = -1;
4174 upperstr(data.val);
4175 if(data.val.size() == 2 && data.val[0] == 'L')
4176 {
4177 switch(data.val[1])
4178 {
4179 case 'D': v = nswapLDEC; break;
4180 case 'H': v = nswapLHEX; break;
4181 }
4182 }
4183 else if(data.val.size() == 1)
4184 {
4185 switch(data.val[0])
4186 {
4187 case 'D': v = nswapDEC; break;
4188 case 'H': v = nswapHEX; break;
4189 case 'B': v = nswapBOOL; break;
4190 }
4191 }
4192 if(unsigned(v) < nswapMAX)
4193 script->metadata.initd_type[c] = v;
4194 else if(data.val == "-1")
4195 script->metadata.initd_type[c] = -1;
4196 else annot_errstr("ERROR: Bad Annotation Value: '@" + key + "' must be"
4197 " exactly 'D','H','LD','LH','B', or '-1' NOT '" + data.strval + "'.");
4198 }
4199 return true;
4200 }
4201 }
4202 else if(!key.compare(0,9,"InitDHelp"))
4203 {
4204 if(c < 8)
4205 {
4206 if(annot_type_check(ANNTY_STR, data))
4207 {
4208 annot_trunc_str(data.val, 65535);
4209 script->metadata.initd_help[c] = data.val;
4210 }
4211 return true;
4212 }
4213 }
4214 else if(!key.compare(0,9,"Attribute"))
4215 {
4216 if(c < 10)
4217 {
4218 if(annot_type_check(ANNTY_STR, data))
4219 {
4220 annot_trunc_str(data.unescaped_val, 255);
4221 script->metadata.attributes[c] = data.unescaped_val;
4222 }
4223 return true;
4224 }
4225 }
4226 else if(!key.compare(0,9,"Attribyte"))
4227 {
4228 if(c < 8)
4229 {
4230 if(annot_type_check(ANNTY_STR, data))
4231 {
4232 annot_trunc_str(data.unescaped_val, 255);
4233 script->metadata.attribytes[c] = data.unescaped_val;
4234 }
4235 return true;
4236 }
4237 }
4238 }
4239 else if(key.size() == 11 && !key.compare(0,10,"Attrishort"))
4240 {
4241 byte c = key[10]-'0';
4242 if(c < 8)
4243 {
4244 if(annot_type_check(ANNTY_STR, data))
4245 {
4246 annot_trunc_str(data.unescaped_val, 255);
4247 script->metadata.attrishorts[c] = data.unescaped_val;
4248 }
4249 return true;
4250 }
4251 }
4252 else if(key.size() == 14)
4253 {
4254 if(!key.compare(0,13,"AttributeHelp"))
4255 {
4256 byte c = key[13]-'0';
4257 if(c < 10)
4258 {
4259 if(annot_type_check(ANNTY_STR, data))
4260 {
4261 annot_trunc_str(data.val, 65535);
4262 script->metadata.attributes_help[c] = data.val;
4263 }
4264 return true;
4265 }
4266 }
4267 else if(!key.compare(0,13,"AttribyteHelp"))
4268 {
4269 byte c = key[13]-'0';
4270 if(c < 8)
4271 {
4272 if(annot_type_check(ANNTY_STR, data))
4273 {
4274 annot_trunc_str(data.val, 65535);
4275 script->metadata.attribytes_help[c] = data.val;
4276 }
4277 return true;
4278 }
4279 }
4280 }
4281 else if(key.size() == 15 && !key.compare(0,14,"AttrishortHelp"))
4282 {
4283 byte c = key[14]-'0';
4284 if(c < 8)
4285 {
4286 if(annot_type_check(ANNTY_STR, data))
4287 {
4288 annot_trunc_str(data.val, 65535);
4289 script->metadata.attrishorts_help[c] = data.val;
4290 }
4291 return true;
4292 }
4293 }
4294 return false;
4295 });
4296 (*yyvalp) = script;}
4297 #line 4298 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4298 break;
4299
4300 case 132: /* Script: Script_Type SCRIPT IDENTIFIER Script_Block */
4301 #line 1234 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4302 {
4303 ASTScriptType* type = (ASTScriptType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4304 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4305 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4306 script->identifier = name;
4307 script->type = type;
4308 script->metadata.script_name = name->getValue();
4309 script->location = (*yylocp);
4310 (*yyvalp) = script;}
4311 #line 4312 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4312 break;
4313
4314 case 133: /* Script_Type: IDENTIFIER */
4315 #line 1247 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4316 {
4317 ASTString* name = static_cast<ASTString*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4318 (*yyvalp) = new ASTScriptType(name->getValue(), (*yylocp));
4319 delete name;}
4320 #line 4321 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4321 break;
4322
4323 case 134: /* Script_Block: LBRACE Script_Block_List RBRACE */
4324 #line 1254 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4325 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4326 #line 4327 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4327 break;
4328
4329 case 135: /* Script_Block: LBRACE RBRACE */
4330 #line 1255 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4331 {(*yyvalp) = new ASTScript((*yylocp));}
4332 #line 4333 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4333 break;
4334
4335 case 136: /* Script_Block_List: Script_Block_List Script_Block_Element */
4336 #line 1259 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4337 {
4338 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4339 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4340 script->addDeclaration(*declaration);
4341 script->location = (*yylocp);
4342 (*yyvalp) = script;}
4343 #line 4344 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4344 break;
4345
4346 case 137: /* Script_Block_List: Script_Block_List Option */
4347 #line 1265 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4348 {
4349 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4350 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4351 script->options.push_back(option);
4352 script->location = (*yylocp);
4353 (*yyvalp) = script;
4354 if (!script->variables.empty()
4355 || !script->functions.empty()
4356 || !script->types.empty()) {
4357 yywarn("WARNING: Options should come before everything else.");}}
4358 #line 4359 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4359 break;
4360
4361 case 138: /* Script_Block_List: Script_Block_Element */
4362 #line 1275 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4363 {
4364 ASTScript* script = new ASTScript((*yylocp));
4365 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4366 script->addDeclaration(*declaration);
4367 (*yyvalp) = script;}
4368 #line 4369 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4369 break;
4370
4371 case 139: /* Script_Block_List: Option */
4372 #line 1280 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4373 {
4374 ASTScript* script = new ASTScript((*yylocp));
4375 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4376 script->options.push_back(option);
4377 (*yyvalp) = script;}
4378 #line 4379 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4379 break;
4380
4381 case 140: /* Script_Block_Element: Data SEMICOLON */
4382 #line 1288 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4383 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4384 #line 4385 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4385 break;
4386
4387 case 141: /* Script_Block_Element: Function */
4388 #line 1289 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4389 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4390 #line 4391 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4391 break;
4392
4393 case 142: /* Script_Block_Element: DataTypeDef SEMICOLON */
4394 #line 1290 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4395 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4396 #line 4397 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4397 break;
4398
4399 case 143: /* Script_Block_Element: DataEnum SEMICOLON */
4400 #line 1291 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4401 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4402 #line 4403 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4403 break;
4404
4405 case 144: /* Script_Block_Element: Using SEMICOLON */
4406 #line 1292 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4407 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4408 #line 4409 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4409 break;
4410
4411 case 145: /* Script_Block_Element: Statement_Assert SEMICOLON */
4412 #line 1293 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4413 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4414 #line 4415 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4415 break;
4416
4417 case 146: /* Script_Block_Element: EXPECTERROR LPAREN Expression_Constant RPAREN Script_Block_Element */
4418 #line 1294 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4419 {
4420 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4421 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4422 declaration->compileErrorCatches.push_back(errorId);
4423 (*yyvalp) = declaration;}
4424 #line 4425 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4425 break;
4426
4427 case 147: /* Annotation_List: Annotation_List COMMA Annotation */
4428 #line 1302 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4429 {
4430 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4431 list->set.push_back((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4432 (*yyvalp) = list;}
4433 #line 4434 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4434 break;
4435
4436 case 148: /* Annotation_List: Annotation */
4437 #line 1306 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4438 {
4439 ASTAnnotationList* list = new ASTAnnotationList((*yylocp));
4440 list->set.push_back((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4441 (*yyvalp) = list;}
4442 #line 4443 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4443 break;
4444
4445 case 149: /* Annotation: HANDLE IDENTIFIER LPAREN QuotedString RPAREN */
4446 #line 1313 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4447 {
4448 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4449 ASTString* val = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4450 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4451 (*yyvalp) = a;}
4452 #line 4453 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4453 break;
4454
4455 case 150: /* Annotation: HANDLE IDENTIFIER LPAREN NUMBER RPAREN */
4456 #line 1318 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4457 {
4458 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4459 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4460 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4461 (*yyvalp) = a;}
4462 #line 4463 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4463 break;
4464
4465 case 151: /* Annotation: HANDLE IDENTIFIER LPAREN LONGNUMBER RPAREN */
4466 #line 1323 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4467 {
4468 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4469 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4470 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4471 (*yyvalp) = a;}
4472 #line 4473 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4473 break;
4474
4475 case 152: /* Annotation: HANDLE IDENTIFIER LPAREN MINUS NUMBER RPAREN */
4476 #line 1328 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4477 {
4478 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4479 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4480 val->negative = !val->negative;
4481 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4482 (*yyvalp) = a;}
4483 #line 4484 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4484 break;
4485
4486 case 153: /* Annotation: HANDLE IDENTIFIER LPAREN MINUS LONGNUMBER RPAREN */
4487 #line 1334 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4488 {
4489 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4490 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4491 val->negative = !val->negative;
4492 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4493 (*yyvalp) = a;}
4494 #line 4495 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4495 break;
4496
4497 case 154: /* Annotation: HANDLE IDENTIFIER LPAREN RPAREN */
4498 #line 1340 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4499 {
4500 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4501 ASTAnnotation* a = new ASTAnnotation(key, (*yylocp));
4502 (*yyvalp) = a;}
4503 #line 4504 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4504 break;
4505
4506 case 155: /* Block_Statement: Statement */
4507 #line 1350 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4508 {
4509 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4510 if(ASTBlock* existing_block = dynamic_cast<ASTBlock*>(stmt))
4511 {
4512 (*yyvalp) = existing_block;
4513 }
4514 else
4515 {
4516 ASTBlock* block = new ASTBlock((*yylocp));
4517 block->statements.push_back(stmt);
4518 (*yyvalp) = block;
4519 }
4520 }
4521 #line 4522 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4522 break;
4523
4524 case 156: /* Statement: Data SEMICOLON */
4525 #line 1367 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4526 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4527 #line 4528 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4528 break;
4529
4530 case 157: /* Statement: DataTypeDef SEMICOLON */
4531 #line 1368 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4532 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4533 #line 4534 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4534 break;
4535
4536 case 158: /* Statement: DataEnum SEMICOLON */
4537 #line 1369 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4538 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4539 #line 4540 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4540 break;
4541
4542 case 159: /* Statement: Using SEMICOLON */
4543 #line 1370 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4544 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4545 #line 4546 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4546 break;
4547
4548 case 160: /* Statement: Statement_Expression SEMICOLON */
4549 #line 1372 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4550 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4551 #line 4552 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4552 break;
4553
4554 case 161: /* Statement: Statement_Block */
4555 #line 1373 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4556 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4557 #line 4558 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4558 break;
4559
4560 case 162: /* Statement: Statement_If */
4561 #line 1374 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4562 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4563 #line 4564 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4564 break;
4565
4566 case 163: /* Statement: Statement_Switch */
4567 #line 1375 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4568 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4569 #line 4570 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4570 break;
4571
4572 case 164: /* Statement: Statement_For */
4573 #line 1376 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4574 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4575 #line 4576 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4576 break;
4577
4578 case 165: /* Statement: Annotated_Loop */
4579 #line 1377 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4580 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4581 #line 4582 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4582 break;
4583
4584 case 166: /* Statement: Statement_While */
4585 #line 1378 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4586 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4587 #line 4588 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4588 break;
4589
4590 case 167: /* Statement: Statement_Do */
4591 #line 1379 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4592 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4593 #line 4594 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4594 break;
4595
4596 case 168: /* Statement: Statement_Repeat */
4597 #line 1380 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4598 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4599 #line 4600 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4600 break;
4601
4602 case 169: /* Statement: Statement_Return SEMICOLON */
4603 #line 1381 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4604 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4605 #line 4606 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4606 break;
4607
4608 case 170: /* Statement: BREAK SEMICOLON */
4609 #line 1382 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4610 {(*yyvalp) = new ASTStmtBreak(NULL, (*yylocp));}
4611 #line 4612 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4612 break;
4613
4614 case 171: /* Statement: BREAK NUMBER SEMICOLON */
4615 #line 1383 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4616 {
4617 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4618 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4619 (*yyvalp) = new ASTStmtBreak(lit, (*yylocp));
4620 }
4621 #line 4622 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4622 break;
4623
4624 case 172: /* Statement: CONTINUE SEMICOLON */
4625 #line 1388 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4626 {(*yyvalp) = new ASTStmtContinue(NULL, (*yylocp));}
4627 #line 4628 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4628 break;
4629
4630 case 173: /* Statement: CONTINUE NUMBER SEMICOLON */
4631 #line 1389 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4632 {
4633 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4634 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4635 (*yyvalp) = new ASTStmtContinue(lit, (*yylocp));
4636 }
4637 #line 4638 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4638 break;
4639
4640 case 174: /* Statement: SEMICOLON */
4641 #line 1394 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4642 {(*yyvalp) = new ASTStmtEmpty((*yylocp));}
4643 #line 4644 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4644 break;
4645
4646 case 175: /* Statement: Statement_CompileError SEMICOLON */
4647 #line 1395 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4648 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4649 #line 4650 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4650 break;
4651
4652 case 176: /* Statement: Statement_Assert SEMICOLON */
4653 #line 1396 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4654 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4655 #line 4656 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4656 break;
4657
4658 case 177: /* Statement_NoSemicolon: Data */
4659 #line 1401 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4660 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4661 #line 4662 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4662 break;
4663
4664 case 178: /* Statement_NoSemicolon: DataTypeDef */
4665 #line 1402 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4666 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4667 #line 4668 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4668 break;
4669
4670 case 179: /* Statement_NoSemicolon: DataEnum */
4671 #line 1403 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4672 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4673 #line 4674 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4674 break;
4675
4676 case 180: /* Statement_NoSemicolon: Statement_Expression */
4677 #line 1405 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4678 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4679 #line 4680 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4680 break;
4681
4682 case 181: /* Statement_NoSemicolon: Statement_Block */
4683 #line 1406 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4684 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4685 #line 4686 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4686 break;
4687
4688 case 182: /* Statement_NoSemicolon: Statement_If */
4689 #line 1407 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4690 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4691 #line 4692 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4692 break;
4693
4694 case 183: /* Statement_NoSemicolon: Statement_Switch */
4695 #line 1408 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4696 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4697 #line 4698 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4698 break;
4699
4700 case 184: /* Statement_NoSemicolon: Statement_For */
4701 #line 1409 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4702 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4703 #line 4704 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4704 break;
4705
4706 case 185: /* Statement_NoSemicolon: Annotated_Loop */
4707 #line 1410 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4708 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4709 #line 4710 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4710 break;
4711
4712 case 186: /* Statement_NoSemicolon: Statement_While */
4713 #line 1411 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4714 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4715 #line 4716 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4716 break;
4717
4718 case 187: /* Statement_NoSemicolon: Statement_Do */
4719 #line 1412 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4720 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4721 #line 4722 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4722 break;
4723
4724 case 188: /* Statement_NoSemicolon: Statement_Return */
4725 #line 1413 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4726 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4727 #line 4728 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4728 break;
4729
4730 case 189: /* Statement_NoSemicolon: BREAK */
4731 #line 1414 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4732 {(*yyvalp) = new ASTStmtBreak(NULL,(*yylocp));}
4733 #line 4734 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4734 break;
4735
4736 case 190: /* Statement_NoSemicolon: BREAK NUMBER */
4737 #line 1415 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4738 {
4739 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4740 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4741 (*yyvalp) = new ASTStmtBreak(lit, (*yylocp));
4742 }
4743 #line 4744 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4744 break;
4745
4746 case 191: /* Statement_NoSemicolon: CONTINUE */
4747 #line 1420 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4748 {(*yyvalp) = new ASTStmtContinue(NULL,(*yylocp));}
4749 #line 4750 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4750 break;
4751
4752 case 192: /* Statement_NoSemicolon: CONTINUE NUMBER */
4753 #line 1421 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4754 {
4755 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4756 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4757 (*yyvalp) = new ASTStmtContinue(lit, (*yylocp));
4758 }
4759 #line 4760 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4760 break;
4761
4762 case 193: /* Statement_NoSemicolon: %empty */
4763 #line 1426 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4764 {(*yyvalp) = new ASTStmtEmpty((*yylocp));}
4765 #line 4766 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4766 break;
4767
4768 case 194: /* Statement_NoSemicolon: Statement_CompileError */
4769 #line 1427 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4770 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4771 #line 4772 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4772 break;
4773
4774 case 195: /* Statement_Block: LBRACE Statement_Block_List RBRACE */
4775 #line 1431 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4776 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4777 #line 4778 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4778 break;
4779
4780 case 196: /* Statement_Block: LBRACE RBRACE */
4781 #line 1432 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4782 {(*yyvalp) = new ASTBlock((*yylocp));}
4783 #line 4784 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4784 break;
4785
4786 case 197: /* Statement_Block_List: Statement_Block_List Statement */
4787 #line 1436 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4788 {
4789 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4790 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4791 block->statements.push_back(stmt);
4792 (*yyvalp) = block;}
4793 #line 4794 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4794 break;
4795
4796 case 198: /* Statement_Block_List: Statement_Block_List Option */
4797 #line 1441 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4798 {
4799 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4800 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4801 block->options.push_back(option);
4802 (*yyvalp) = block;
4803 if (!block->statements.empty()) {
4804 yywarn("WARNING: Options should come before everything else.");}}
4805 #line 4806 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4806 break;
4807
4808 case 199: /* Statement_Block_List: Statement */
4809 #line 1448 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4810 {
4811 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4812 ASTBlock* block = new ASTBlock((*yylocp));
4813 block->statements.push_back(stmt);
4814 (*yyvalp) = block;}
4815 #line 4816 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4816 break;
4817
4818 case 200: /* Statement_Block_List: Option */
4819 #line 1453 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4820 {
4821 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4822 ASTBlock* block = new ASTBlock((*yylocp));
4823 block->options.push_back(option);
4824 (*yyvalp) = block;}
4825 #line 4826 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4826 break;
4827
4828 case 201: /* Statement_If: IF If_Body */
4829 #line 1461 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4830 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4831 #line 4832 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4832 break;
4833
4834 case 202: /* Statement_If: UNLESS If_Body */
4835 #line 1462 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4836 {
4837 ASTStmtIf* stmt = (ASTStmtIf*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4838 stmt->invert();
4839 (*yyvalp) = stmt;
4840 }
4841 #line 4842 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4842 break;
4843
4844 case 203: /* If_Body: LPAREN Single_Data_req_assign RPAREN Block_Statement */
4845 #line 1470 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4846 {
4847 ASTDataDecl* decl = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4848 ASTBlock* stmt = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4849 (*yyvalp) = new ASTStmtIf(decl, stmt, (*yylocp));}
4850 #line 4851 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4851 break;
4852
4853 case 204: /* If_Body: LPAREN Single_Data_req_assign RPAREN Block_Statement ELSE Block_Statement */
4854 #line 1474 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4855 {
4856 ASTDataDecl* decl = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4857 ASTBlock* thenStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4858 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4859 (*yyvalp) = new ASTStmtIfElse(decl, thenStatement, elseStatement, (*yylocp));}
4860 #line 4861 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4861 break;
4862
4863 case 205: /* If_Body: LPAREN Expression RPAREN Block_Statement */
4864 #line 1479 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4865 {
4866 ASTExpr* cond = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4867 ASTBlock* stmt = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4868 (*yyvalp) = new ASTStmtIf(cond, stmt, (*yylocp));}
4869 #line 4870 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4870 break;
4871
4872 case 206: /* If_Body: LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
4873 #line 1483 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4874 {
4875 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4876 ASTBlock* thenStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4877 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4878 (*yyvalp) = new ASTStmtIfElse(test, thenStatement, elseStatement, (*yylocp));}
4879 #line 4880 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4880 break;
4881
4882 case 207: /* Statement_Switch: SWITCH LPAREN Expression RPAREN LBRACE Statement_Switch_Body RBRACE */
4883 #line 1491 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4884 {
4885 ASTExpr* key = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4886 ASTStmtSwitch* sw = (ASTStmtSwitch*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4887 sw->key = key;
4888 (*yyvalp) = sw;}
4889 #line 4890 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4890 break;
4891
4892 case 208: /* Statement_Switch_Body: Statement_Switch_Body Statement_Switch_Cases Statement_Block_List */
4893 #line 1498 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4894 {
4895 ASTStmtSwitch* sw = (ASTStmtSwitch*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4896 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4897 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4898 cases->block = block;
4899 sw->cases.push_back(cases);
4900 (*yyvalp) = sw;}
4901 #line 4902 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4902 break;
4903
4904 case 209: /* Statement_Switch_Body: Statement_Switch_Cases Statement_Block_List */
4905 #line 1505 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4906 {
4907 ASTStmtSwitch* sw = new ASTStmtSwitch((*yylocp));
4908 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4909 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4910 cases->block = block;
4911 sw->cases.push_back(cases);
4912 (*yyvalp) = sw;}
4913 #line 4914 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4914 break;
4915
4916 case 210: /* Statement_Switch_Cases: Statement_Switch_Cases CASE Expression_Constant COLON */
4917 #line 1515 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4918 {
4919 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4920 ASTExprConst* key = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4921 cases->cases.push_back(key);
4922 (*yyvalp) = cases;}
4923 #line 4924 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4924 break;
4925
4926 case 211: /* Statement_Switch_Cases: Statement_Switch_Cases DEFAULT COLON */
4927 #line 1520 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4928 {
4929 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4930 cases->isDefault = true;
4931 (*yyvalp) = cases;}
4932 #line 4933 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4933 break;
4934
4935 case 212: /* Statement_Switch_Cases: Statement_Switch_Cases CASE Expression_Const_Range COLON */
4936 #line 1524 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4937 {
4938 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4939 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4940 cases->ranges.push_back(range);
4941 (*yyvalp) = cases;}
4942 #line 4943 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4943 break;
4944
4945 case 213: /* Statement_Switch_Cases: Statement_Switch_Cases CASE CASESTRING COLON */
4946 #line 1529 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4947 {
4948 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4949 ASTStringLiteral* key = new ASTStringLiteral(*rawstring);
4950 delete rawstring;
4951 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4952 cases->str_cases.push_back(key);
4953 (*yyvalp) = cases;}
4954 #line 4955 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4955 break;
4956
4957 case 214: /* Statement_Switch_Cases: CASE Expression_Constant COLON */
4958 #line 1536 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4959 {
4960 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
4961 ASTExprConst* key = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4962 cases->cases.push_back(key);
4963 (*yyvalp) = cases;}
4964 #line 4965 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4965 break;
4966
4967 case 215: /* Statement_Switch_Cases: CASE Expression_Const_Range COLON */
4968 #line 1541 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4969 {
4970 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
4971 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4972 cases->ranges.push_back(range);
4973 (*yyvalp) = cases;}
4974 #line 4975 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4975 break;
4976
4977 case 216: /* Statement_Switch_Cases: CASE CASESTRING COLON */
4978 #line 1546 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4979 {
4980 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
4981 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4982 ASTStringLiteral* key = new ASTStringLiteral(*rawstring);
4983 delete rawstring;
4984 cases->str_cases.push_back(key);
4985 (*yyvalp) = cases;}
4986 #line 4987 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4987 break;
4988
4989 case 217: /* Statement_Switch_Cases: DEFAULT COLON */
4990 #line 1553 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
4991 {
4992 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
4993 cases->isDefault = true;
4994 (*yyvalp) = cases;}
4995 #line 4996 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
4996 break;
4997
4998 case 218: /* Statement_For: Statement_For_Standard */
4999 #line 1560 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5000 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5001 #line 5002 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5002 break;
5003
5004 case 219: /* Statement_For: Statement_For_Each */
5005 #line 1561 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5006 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5007 #line 5008 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5008 break;
5009
5010 case 220: /* Statement_CommaList: Statement_CommaList COMMA Statement_NoSemicolon */
5011 #line 1565 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5012 {
5013 ASTNodeList<ASTStmt>* list = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5014 list->push((ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5015 (*yyvalp) = list;
5016 }
5017 #line 5018 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5018 break;
5019
5020 case 221: /* Statement_CommaList: Statement_NoSemicolon */
5021 #line 1570 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5022 {
5023 ASTNodeList<ASTStmt>* list = new ASTNodeList<ASTStmt>();
5024 list->push((ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5025 (*yyvalp) = list;
5026 }
5027 #line 5028 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5028 break;
5029
5030 case 222: /* Statement_For_Standard: FOR LPAREN Statement_NoSemicolon SEMICOLON Expression SEMICOLON Statement_CommaList RPAREN Block_Statement */
5031 #line 1583 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5032 {
5033 ASTStmt* setup = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5034 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5035 ASTNodeList<ASTStmt>* increments = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5036 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5037 (*yyvalp) = new ASTStmtFor(setup, test, increments, body, nullptr, (*yylocp));
5038 }
5039 #line 5040 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5040 break;
5041
5042 case 223: /* Statement_For_Standard: FOR LPAREN Statement_NoSemicolon SEMICOLON Expression SEMICOLON Statement_CommaList RPAREN Block_Statement ELSE Block_Statement */
5043 #line 1595 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5044 {
5045 ASTStmt* setup = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-8)].yystate.yysemantics.yyval;
5046 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5047 ASTNodeList<ASTStmt>* increments = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5048 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5049 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5050 (*yyvalp) = new ASTStmtFor(setup, test, increments, body, elseStatement, (*yylocp));
5051 }
5052 #line 5053 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5053 break;
5054
5055 case 224: /* Statement_For_Each: FOR LPAREN Identifier Token_In Expression RPAREN Block_Statement */
5056 #line 1608 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5057 {
5058 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5059 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5060 ASTStmt* body = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5061
5062 (*yyvalp) = new ASTStmtForEach(iden, expr, body, nullptr, (*yylocp));
5063 }
5064 #line 5065 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5065 break;
5066
5067 case 225: /* Statement_For_Each: FOR LPAREN Identifier Token_In Expression RPAREN Block_Statement ELSE Block_Statement */
5068 #line 1617 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5069 {
5070 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5071 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5072 ASTStmt* body = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5073 ASTStmt* elseblock = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5074
5075 (*yyvalp) = new ASTStmtForEach(iden, expr, body, elseblock, (*yylocp));
5076 }
5077 #line 5078 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5078 break;
5079
5080 case 226: /* Annotated_Loop: Annotation_List Statement_Loop */
5081 #line 1628 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5082 {
5083 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5084 ASTStmtRangeLoop* loop = (ASTStmtRangeLoop*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5085 handle_annotations(list, [&](AnnotData& data)
5086 {
5087 auto& key = data.key;
5088 if(key == "AlwaysRunEndpoint")
5089 {
5090 if(annot_type_check(ANNTY_STR, data))
5091 {
5092 if(data.strval == "off")
5093 loop->overflow = ASTStmtRangeLoop::OVERFLOW_ALLOW;
5094 else if(data.strval == "int")
5095 loop->overflow = ASTStmtRangeLoop::OVERFLOW_INT;
5096 else if(data.strval == "long" || data.strval == "float")
5097 loop->overflow = ASTStmtRangeLoop::OVERFLOW_LONG;
5098 else annot_errstr(annot_err_header+": '@"+key+"' must be"
5099 " exactly 'off','int','float', or 'long', NOT '" + data.strval + "'.");
5100 }
5101 return true;
5102 }
5103 return false;
5104 });
5105 (*yyvalp) = loop;}
5106 #line 5107 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5107 break;
5108
5109 case 227: /* Annotated_Loop: Statement_Loop */
5110 #line 1652 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5111 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5112 #line 5113 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5113 break;
5114
5115 case 228: /* Statement_Loop: Statement_Loop_Inf */
5116 #line 1656 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5117 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5118 #line 5119 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5119 break;
5120
5121 case 229: /* Statement_Loop: Statement_Loop_Range */
5122 #line 1657 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5123 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5124 #line 5125 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5125 break;
5126
5127 case 230: /* Statement_Loop_Inf: LOOP LPAREN RPAREN Block_Statement */
5128 #line 1662 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5129 {
5130 ASTExpr* test = new ASTBoolLiteral(true, (*yylocp));
5131 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5132 (*yyvalp) = new ASTStmtWhile(test,body,nullptr,(*yylocp));
5133 }
5134 #line 5135 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5135 break;
5136
5137 case 231: /* Statement_Loop_Range: Statement_Loop_Range_Base ELSE Block_Statement */
5138 #line 1670 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5139 {
5140 ASTStmtRangeLoop* loop = (ASTStmtRangeLoop*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5141 ASTStmt* elseblock = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5142 loop->elseBlock = elseblock;
5143 (*yyvalp) = loop;
5144 }
5145 #line 5146 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5146 break;
5147
5148 case 232: /* Statement_Loop_Range: Statement_Loop_Range_Base */
5149 #line 1676 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5150 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5151 #line 5152 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5152 break;
5153
5154 case 233: /* Statement_Loop_Range_Base: LOOP LPAREN DataType IDENTIFIER Token_In Expression_Range COMMA Expression RPAREN Block_Statement */
5155 #line 1681 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5156 {
5157 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-7)].yystate.yysemantics.yyval;
5158 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5159 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5160 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5161 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5162 (*yyvalp) = new ASTStmtRangeLoop(type, iden->getValue(), range, incr, body, (*yylocp));
5163 delete iden;
5164 }
5165 #line 5166 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5166 break;
5167
5168 case 234: /* Statement_Loop_Range_Base: LOOP LPAREN IDENTIFIER Token_In Expression_Range COMMA Expression RPAREN Block_Statement */
5169 #line 1691 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5170 {
5171 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5172 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5173 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5174 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5175 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5176 (*yyvalp) = new ASTStmtRangeLoop(type, iden->getValue(), range, incr, body, (*yylocp));
5177 delete iden;
5178 }
5179 #line 5180 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5180 break;
5181
5182 case 235: /* Statement_Loop_Range_Base: LOOP LPAREN Expression_Range COMMA Expression RPAREN Block_Statement */
5183 #line 1701 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5184 {
5185 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5186 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5187 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5188 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5189 (*yyvalp) = new ASTStmtRangeLoop(type, "__LOOP_ITER", range, incr, body, (*yylocp));
5190 }
5191 #line 5192 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5192 break;
5193
5194 case 236: /* Statement_Loop_Range_Base: LOOP LPAREN DataType IDENTIFIER Token_In Expression_Range RPAREN Block_Statement */
5195 #line 1709 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5196 {
5197 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-5)].yystate.yysemantics.yyval;
5198 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5199 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5200 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5201 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5202 (*yyvalp) = new ASTStmtRangeLoop(type, iden->getValue(), range, incr, body, (*yylocp));
5203 delete iden;
5204 }
5205 #line 5206 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5206 break;
5207
5208 case 237: /* Statement_Loop_Range_Base: LOOP LPAREN IDENTIFIER Token_In Expression_Range RPAREN Block_Statement */
5209 #line 1719 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5210 {
5211 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5212 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5213 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5214 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5215 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5216 (*yyvalp) = new ASTStmtRangeLoop(type, iden->getValue(), range, incr, body, (*yylocp));
5217 delete iden;
5218 }
5219 #line 5220 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5220 break;
5221
5222 case 238: /* Statement_Loop_Range_Base: LOOP LPAREN Expression_Range RPAREN Block_Statement */
5223 #line 1729 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5224 {
5225 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5226 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5227 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5228 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5229 (*yyvalp) = new ASTStmtRangeLoop(type, "__LOOP_ITER", range, incr, body, (*yylocp));
5230 }
5231 #line 5232 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5232 break;
5233
5234 case 239: /* Token_In: COLON */
5235 #line 1739 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5236 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5237 #line 5238 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5238 break;
5239
5240 case 240: /* Token_In: IN */
5241 #line 1740 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5242 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5243 #line 5244 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5244 break;
5245
5246 case 241: /* Statement_While: WHILE LPAREN Expression RPAREN Block_Statement */
5247 #line 1744 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5248 {
5249 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5250 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5251 (*yyvalp) = new ASTStmtWhile(test, body, nullptr, (*yylocp));}
5252 #line 5253 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5253 break;
5254
5255 case 242: /* Statement_While: WHILE LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
5256 #line 1748 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5257 {
5258 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5259 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5260 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5261 (*yyvalp) = new ASTStmtWhile(test, body, elseblock, (*yylocp));}
5262 #line 5263 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5263 break;
5264
5265 case 243: /* Statement_While: UNTIL LPAREN Expression RPAREN Block_Statement */
5266 #line 1753 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5267 {
5268 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5269 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5270 ASTStmtWhile* stmt = new ASTStmtWhile(test, body, nullptr, (*yylocp));
5271 stmt->invert();
5272 (*yyvalp) = stmt;}
5273 #line 5274 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5274 break;
5275
5276 case 244: /* Statement_While: UNTIL LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
5277 #line 1759 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5278 {
5279 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5280 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5281 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5282 ASTStmtWhile* stmt = new ASTStmtWhile(test, body, elseblock, (*yylocp));
5283 stmt->invert();
5284 (*yyvalp) = stmt;}
5285 #line 5286 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5286 break;
5287
5288 case 245: /* Statement_Do: DO Block_Statement WHILE LPAREN Expression RPAREN */
5289 #line 1769 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5290 {
5291 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5292 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5293 (*yyvalp) = new ASTStmtDo(test, body, nullptr, (*yylocp));}
5294 #line 5295 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5295 break;
5296
5297 case 246: /* Statement_Do: DO Block_Statement WHILE LPAREN Expression RPAREN ELSE Block_Statement */
5298 #line 1773 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5299 {
5300 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5301 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5302 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5303 (*yyvalp) = new ASTStmtDo(test, body, elseblock, (*yylocp));}
5304 #line 5305 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5305 break;
5306
5307 case 247: /* Statement_Do: DO Block_Statement UNTIL LPAREN Expression RPAREN */
5308 #line 1778 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5309 {
5310 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5311 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5312 ASTStmtDo* stmt = new ASTStmtDo(test, body, nullptr, (*yylocp));
5313 stmt->invert();
5314 (*yyvalp) = stmt;}
5315 #line 5316 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5316 break;
5317
5318 case 248: /* Statement_Do: DO Block_Statement UNTIL LPAREN Expression RPAREN ELSE Block_Statement */
5319 #line 1784 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5320 {
5321 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5322 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5323 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5324 ASTStmtDo* stmt = new ASTStmtDo(test, body, elseblock, (*yylocp));
5325 stmt->invert();
5326 (*yyvalp) = stmt;}
5327 #line 5328 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5328 break;
5329
5330 case 249: /* Statement_Repeat: REPEAT LPAREN Expression_Constant RPAREN Statement */
5331 #line 1794 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5332 {
5333 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5334 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5335 (*yyvalp) = new ASTStmtRepeat(expr, body, (*yylocp));}
5336 #line 5337 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5337 break;
5338
5339 case 250: /* Statement_Return: RETURN Expression */
5340 #line 1801 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5341 {
5342 ASTExpr* value = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5343 (*yyvalp) = new ASTStmtReturnVal(value, (*yylocp));}
5344 #line 5345 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5345 break;
5346
5347 case 251: /* Statement_Return: RETURN */
5348 #line 1804 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5349 {(*yyvalp) = new ASTStmtReturn((*yylocp));}
5350 #line 5351 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5351 break;
5352
5353 case 252: /* Statement_CompileError: EXPECTERROR LPAREN Expression_Constant RPAREN Statement_NoSemicolon */
5354 #line 1808 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5355 {
5356 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5357 ASTStmt* statement = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5358 statement->compileErrorCatches.push_back(errorId);
5359 (*yyvalp) = statement;}
5360 #line 5361 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5361 break;
5362
5363 case 253: /* DataEnum: ENUM LBRACE Enum_Block RBRACE */
5364 #line 1816 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5365 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
5366 #line 5367 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5367 break;
5368
5369 case 254: /* DataEnum: ENUM ASSIGN DataType LBRACE Enum_Block RBRACE */
5370 #line 1817 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5371 {
5372 ASTDataEnum* list = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5373 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5374 type->constant_ = 1; //force to be constant, skip `const const` errors
5375 list->baseType = type;
5376 (*yyvalp) = list;}
5377 #line 5378 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5378 break;
5379
5380 case 255: /* Enum_Block: Enum_Block COMMA Data_Element */
5381 #line 1825 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5382 {
5383 ASTDataEnum* list = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5384 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5385 list->addDeclaration(element);
5386 list->location = (*yylocp);
5387 (*yyvalp) = list;}
5388 #line 5389 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5389 break;
5390
5391 case 256: /* Enum_Block: Data_Element */
5392 #line 1831 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5393 {
5394 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5395 ASTDataEnum* list = new ASTDataEnum((*yylocp));
5396 list->addDeclaration(element);
5397 (*yyvalp) = list;}
5398 #line 5399 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5399 break;
5400
5401 case 257: /* ScopeRes: SCOPERES */
5402 #line 1883 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5403 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5404 #line 5405 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5405 break;
5406
5407 case 258: /* Identifier_List: Mixed_Identifier_List */
5408 #line 1888 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5409 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5410 #line 5411 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5411 break;
5412
5413 case 259: /* Identifier_List: idlist_scopres */
5414 #line 1889 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5415 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5416 #line 5417 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5417 break;
5418
5419 case 260: /* Identifier_List: idlist_dot */
5420 #line 1890 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5421 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5422 #line 5423 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5423 break;
5424
5425 case 261: /* Identifier_List: Ambigious_Iden_List */
5426 #line 1891 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5427 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5428 #line 5429 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5429 break;
5430
5431 case 262: /* Scoperes_Identifier_List: idlist_scopres */
5432 #line 1895 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5433 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5434 #line 5435 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5435 break;
5436
5437 case 263: /* Scoperes_Identifier_List: Ambigious_Iden_List */
5438 #line 1896 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5439 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5440 #line 5441 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5441 break;
5442
5443 case 264: /* Mixed_Identifier_List: Mixed_Identifier_List DOT Identifier */
5444 #line 1905 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5445 {
5446 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5447 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5448 identifier->components.push_back(name->getValue());
5449 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5450 identifier->delimiters.push_back(".");
5451 identifier->location = (*yylocp);
5452 (*yyvalp) = identifier;}
5453 #line 5454 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5454 break;
5455
5456 case 265: /* Mixed_Identifier_List: idlist_scopres DOT Identifier */
5457 #line 1913 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5458 {
5459 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5460 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5461 identifier->components.push_back(name->getValue());
5462 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5463 identifier->delimiters.push_back(".");
5464 identifier->location = (*yylocp);
5465 (*yyvalp) = identifier;}
5466 #line 5467 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5467 break;
5468
5469 case 266: /* Mixed_Identifier_List: Mixed_Identifier_List ScopeRes Identifier */
5470 #line 1921 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5471 {
5472 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5473 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5474 identifier->components.push_back(name->getValue());
5475 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5476 identifier->delimiters.push_back("::");
5477 identifier->location = (*yylocp);
5478 (*yyvalp) = identifier;}
5479 #line 5480 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5480 break;
5481
5482 case 267: /* Mixed_Identifier_List: idlist_dot ScopeRes Identifier */
5483 #line 1929 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5484 {
5485 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5486 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5487 identifier->components.push_back(name->getValue());
5488 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5489 identifier->delimiters.push_back("::");
5490 identifier->location = (*yylocp);
5491 (*yyvalp) = identifier;}
5492 #line 5493 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5493 break;
5494
5495 case 268: /* idlist_scopres: idlist_scopres ScopeRes Identifier */
5496 #line 1940 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5497 {
5498 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5499 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5500 identifier->components.push_back(name->getValue());
5501 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5502 identifier->delimiters.push_back("::");
5503 identifier->location = (*yylocp);
5504 (*yyvalp) = identifier;}
5505 #line 5506 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5506 break;
5507
5508 case 269: /* idlist_scopres: Ambigious_Iden_List ScopeRes Identifier */
5509 #line 1948 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5510 {
5511 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5512 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5513 identifier->components.push_back(name->getValue());
5514 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5515 identifier->delimiters.push_back("::");
5516 identifier->location = (*yylocp);
5517 (*yyvalp) = identifier;}
5518 #line 5519 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5519 break;
5520
5521 case 270: /* idlist_scopres: ScopeRes Ambigious_Iden_List */
5522 #line 1956 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5523 {
5524 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5525 identifier->noUsing = true;
5526 (*yyvalp) = identifier;}
5527 #line 5528 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5528 break;
5529
5530 case 271: /* idlist_dot: idlist_dot DOT Identifier */
5531 #line 1963 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5532 {
5533 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5534 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5535 identifier->components.push_back(name->getValue());
5536 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5537 identifier->delimiters.push_back(".");
5538 identifier->location = (*yylocp);
5539 (*yyvalp) = identifier;}
5540 #line 5541 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5541 break;
5542
5543 case 272: /* idlist_dot: Ambigious_Iden_List DOT Identifier */
5544 #line 1971 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5545 {
5546 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5547 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5548 identifier->components.push_back(name->getValue());
5549 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5550 identifier->delimiters.push_back(".");
5551 identifier->location = (*yylocp);
5552 (*yyvalp) = identifier;}
5553 #line 5554 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5554 break;
5555
5556 case 273: /* Ambigious_Iden_List: Identifier */
5557 #line 1982 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5558 {
5559 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5560 ASTExprIdentifier* identifier = new ASTExprIdentifier(name->getValue(), (*yylocp));
5561 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5562 identifier->doc_comment = std::move(name->doc_comment);
5563 if (!first_identifier_for_line) first_identifier_for_line = identifier;
5564 (*yyvalp) = identifier;}
5565 #line 5566 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5566 break;
5567
5568 case 274: /* Identifier: IDENTIFIER */
5569 #line 1992 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5570 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5571 #line 5572 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5572 break;
5573
5574 case 275: /* Func_Left: Expr_Arrow */
5575 #line 1996 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5576 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5577 #line 5578 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5578 break;
5579
5580 case 276: /* Func_Left: Identifier_List */
5581 #line 1997 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5582 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5583 #line 5584 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5584 break;
5585
5586 case 277: /* Function_Call: NEW Identifier_List LPAREN RPAREN */
5587 #line 2001 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5588 {
5589 ASTExprCall* call = new ASTExprCall((*yylocp));
5590 call->setConstructor(true);
5591 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5592 call->left = left;
5593 call->location = (*yylocp);
5594 (*yyvalp) = call;}
5595 #line 5596 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5596 break;
5597
5598 case 278: /* Function_Call: NEW Identifier_List LPAREN Function_Call_Parameters RPAREN */
5599 #line 2008 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5600 {
5601 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5602 call->setConstructor(true);
5603 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5604 call->left = left;
5605 call->location = (*yylocp);
5606 (*yyvalp) = call;}
5607 #line 5608 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5608 break;
5609
5610 case 279: /* Function_Call: Func_Left LPAREN RPAREN */
5611 #line 2015 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5612 {
5613 ASTExprCall* call = new ASTExprCall((*yylocp));
5614 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5615 call->left = left;
5616 call->location = (*yylocp);
5617 (*yyvalp) = call;}
5618 #line 5619 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5619 break;
5620
5621 case 280: /* Function_Call: Func_Left LPAREN Function_Call_Parameters RPAREN */
5622 #line 2021 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5623 {
5624 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5625 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5626 call->left = left;
5627 call->location = (*yylocp);
5628 (*yyvalp) = call;}
5629 #line 5630 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5630 break;
5631
5632 case 281: /* Function_Call_Parameters: Function_Call_Parameters COMMA Expression */
5633 #line 2030 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5634 {
5635 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5636 ASTExpr* e = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5637 call->parameters.push_back(e);
5638 call->location = (*yylocp);
5639 (*yyvalp) = call;}
5640 #line 5641 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5641 break;
5642
5643 case 282: /* Function_Call_Parameters: Expression */
5644 #line 2036 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5645 {
5646 ASTExprCall* call = new ASTExprCall((*yylocp));
5647 ASTExpr* e = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5648 call->parameters.push_back(e);
5649 (*yyvalp) = call;}
5650 #line 5651 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5651 break;
5652
5653 case 283: /* Expr_1: Identifier_List */
5654 #line 2048 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5655 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5656 #line 5657 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5657 break;
5658
5659 case 284: /* Expr_1: Literal */
5660 #line 2049 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5661 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5662 #line 5663 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5663 break;
5664
5665 case 285: /* Expr_1: LPAREN Expression RPAREN */
5666 #line 2050 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5667 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
5668 #line 5669 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5669 break;
5670
5671 case 286: /* Expr_2: Expr_1 */
5672 #line 2052 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5673 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5674 #line 5675 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5675 break;
5676
5677 case 287: /* Expr_2: LT DataType GT Expr_2 */
5678 #line 2062 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5679 {
5680 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5681 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5682 ASTExprCast* cast = new ASTExprCast(type, expr, (*yylocp));
5683 (*yyvalp) = cast;}
5684 #line 5685 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5685 break;
5686
5687 case 288: /* Expr_Arrow: Expr_3 ARROW IDENTIFIER */
5688 #line 2070 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5689 {
5690 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5691 ASTString* right = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5692 (*yyvalp) = new ASTExprArrow(left, right, (*yylocp));}
5693 #line 5694 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5694 break;
5695
5696 case 289: /* Expr_3: Expr_2 */
5697 #line 2076 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5698 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5699 #line 5700 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5700 break;
5701
5702 case 290: /* Expr_3: Expr_3 INCREMENT */
5703 #line 2078 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5704 {(*yyvalp) = new ASTExprIncrement(false, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));}
5705 #line 5706 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5706 break;
5707
5708 case 291: /* Expr_3: Expr_3 DECREMENT */
5709 #line 2080 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5710 {(*yyvalp) = new ASTExprDecrement(false, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));}
5711 #line 5712 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5712 break;
5713
5714 case 292: /* Expr_3: Function_Call */
5715 #line 2082 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5716 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5717 #line 5718 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5718 break;
5719
5720 case 293: /* Expr_3: Expr_3 LBRACKET Expression RBRACKET */
5721 #line 2084 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5722 {
5723 (*yyvalp) = new ASTExprIndex((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));;}
5724 #line 5725 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5725 break;
5726
5727 case 294: /* Expr_3: Expr_Arrow */
5728 #line 2087 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5729 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5730 #line 5731 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5731 break;
5732
5733 case 295: /* Expr_4: Expr_3 */
5734 #line 2090 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5735 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5736 #line 5737 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5737 break;
5738
5739 case 296: /* Expr_4: INCREMENT Expr_4 */
5740 #line 2092 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5741 {(*yyvalp) = new ASTExprIncrement(true, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5742 #line 5743 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5743 break;
5744
5745 case 297: /* Expr_4: DECREMENT Expr_4 */
5746 #line 2094 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5747 {(*yyvalp) = new ASTExprDecrement(true, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5748 #line 5749 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5749 break;
5750
5751 case 298: /* Expr_4: MINUS Expr_4 */
5752 #line 2096 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5753 {(*yyvalp) = new ASTExprNegate((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5754 #line 5755 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5755 break;
5756
5757 case 299: /* Expr_4: NOT Expr_4 */
5758 #line 2098 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5759 {(*yyvalp) = new ASTExprNot((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5760 #line 5761 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5761 break;
5762
5763 case 300: /* Expr_4: BITNOT Expr_4 */
5764 #line 2100 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5765 {(*yyvalp) = new ASTExprBitNot((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5766 #line 5767 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5767 break;
5768
5769 case 301: /* Expr_5: Expr_4 */
5770 #line 2103 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5771 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5772 #line 5773 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5773 break;
5774
5775 case 302: /* Expr_5: Expr_5 EXPN Expr_4 */
5776 #line 2105 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5777 {(*yyvalp) = new ASTExprExpn((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5778 #line 5779 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5779 break;
5780
5781 case 303: /* Expr_6: Expr_5 */
5782 #line 2108 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5783 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5784 #line 5785 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5785 break;
5786
5787 case 304: /* Expr_6: Expr_6 TIMES Expr_5 */
5788 #line 2110 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5789 {(*yyvalp) = new ASTExprTimes((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5790 #line 5791 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5791 break;
5792
5793 case 305: /* Expr_6: Expr_6 DIVIDE Expr_5 */
5794 #line 2112 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5795 {(*yyvalp) = new ASTExprDivide((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5796 #line 5797 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5797 break;
5798
5799 case 306: /* Expr_6: Expr_6 MODULO Expr_5 */
5800 #line 2114 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5801 {(*yyvalp) = new ASTExprModulo((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5802 #line 5803 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5803 break;
5804
5805 case 307: /* Expr_7: Expr_6 */
5806 #line 2117 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5807 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5808 #line 5809 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5809 break;
5810
5811 case 308: /* Expr_7: Expr_7 PLUS Expr_6 */
5812 #line 2119 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5813 {(*yyvalp) = new ASTExprPlus((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5814 #line 5815 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5815 break;
5816
5817 case 309: /* Expr_7: Expr_7 MINUS Expr_6 */
5818 #line 2121 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5819 {(*yyvalp) = new ASTExprMinus((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5820 #line 5821 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5821 break;
5822
5823 case 310: /* Expr_8: Expr_7 */
5824 #line 2124 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5825 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5826 #line 5827 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5827 break;
5828
5829 case 311: /* Expr_8: Expr_8 LSHIFT Expr_7 */
5830 #line 2126 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5831 {(*yyvalp) = new ASTExprLShift((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5832 #line 5833 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5833 break;
5834
5835 case 312: /* Expr_8: Expr_8 RSHIFT Expr_7 */
5836 #line 2128 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5837 {(*yyvalp) = new ASTExprRShift((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5838 #line 5839 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5839 break;
5840
5841 case 313: /* Expr_9: Expr_8 */
5842 #line 2131 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5843 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5844 #line 5845 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5845 break;
5846
5847 case 314: /* Expr_9: Expr_9 LT Expr_8 */
5848 #line 2133 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5849 {(*yyvalp) = new ASTExprLT((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5850 #line 5851 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5851 break;
5852
5853 case 315: /* Expr_9: Expr_9 LE Expr_8 */
5854 #line 2135 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5855 {(*yyvalp) = new ASTExprLE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5856 #line 5857 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5857 break;
5858
5859 case 316: /* Expr_9: Expr_9 GT Expr_8 */
5860 #line 2137 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5861 {(*yyvalp) = new ASTExprGT((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5862 #line 5863 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5863 break;
5864
5865 case 317: /* Expr_9: Expr_9 GE Expr_8 */
5866 #line 2139 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5867 {(*yyvalp) = new ASTExprGE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5868 #line 5869 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5869 break;
5870
5871 case 318: /* Expr_10: Expr_9 */
5872 #line 2142 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5873 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5874 #line 5875 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5875 break;
5876
5877 case 319: /* Expr_10: Expr_10 EQ Expr_9 */
5878 #line 2144 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5879 {(*yyvalp) = new ASTExprEQ((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5880 #line 5881 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5881 break;
5882
5883 case 320: /* Expr_10: Expr_10 NE Expr_9 */
5884 #line 2146 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5885 {(*yyvalp) = new ASTExprNE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5886 #line 5887 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5887 break;
5888
5889 case 321: /* Expr_10: Expr_10 APPXEQUAL Expr_9 */
5890 #line 2148 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5891 {(*yyvalp) = new ASTExprAppxEQ((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5892 #line 5893 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5893 break;
5894
5895 case 322: /* Expr_10: Expr_10 XOR Expr_9 */
5896 #line 2150 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5897 {(*yyvalp) = new ASTExprXOR((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5898 #line 5899 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5899 break;
5900
5901 case 323: /* Expr_11: Expr_10 */
5902 #line 2153 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5903 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5904 #line 5905 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5905 break;
5906
5907 case 324: /* Expr_11: Expr_11 BITAND Expr_10 */
5908 #line 2155 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5909 {(*yyvalp) = new ASTExprBitAnd((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5910 #line 5911 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5911 break;
5912
5913 case 325: /* Expr_12: Expr_11 */
5914 #line 2158 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5915 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5916 #line 5917 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5917 break;
5918
5919 case 326: /* Expr_12: Expr_12 BITXOR Expr_11 */
5920 #line 2160 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5921 {(*yyvalp) = new ASTExprBitXor((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5922 #line 5923 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5923 break;
5924
5925 case 327: /* Expr_13: Expr_12 */
5926 #line 2163 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5927 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5928 #line 5929 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5929 break;
5930
5931 case 328: /* Expr_13: Expr_13 BITOR Expr_12 */
5932 #line 2165 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5933 {(*yyvalp) = new ASTExprBitOr((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5934 #line 5935 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5935 break;
5936
5937 case 329: /* Expr_14: Expr_13 */
5938 #line 2168 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5939 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5940 #line 5941 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5941 break;
5942
5943 case 330: /* Expr_14: Expr_14 AND Expr_13 */
5944 #line 2170 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5945 {(*yyvalp) = new ASTExprAnd((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5946 #line 5947 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5947 break;
5948
5949 case 331: /* Expr_15: Expr_14 */
5950 #line 2173 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5951 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5952 #line 5953 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5953 break;
5954
5955 case 332: /* Expr_15: Expr_15 OR Expr_14 */
5956 #line 2175 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5957 {(*yyvalp) = new ASTExprOr((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5958 #line 5959 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5959 break;
5960
5961 case 333: /* Expr_16: Expr_15 */
5962 #line 2178 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5963 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5964 #line 5965 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5965 break;
5966
5967 case 334: /* Expr_16: Expr_15 QMARK Expr_16 COLON Expr_16 */
5968 #line 2181 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5969 {
5970 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5971 ASTExpr* middle = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5972 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5973 (*yyvalp) = new ASTTernaryExpr(left, middle, right, (*yylocp));
5974 }
5975 #line 5976 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5976 break;
5977
5978 case 335: /* Expr_17: Expr_16 */
5979 #line 2189 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5980 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5981 #line 5982 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5982 break;
5983
5984 case 336: /* Expr_17: DELETE Expr_17 */
5985 #line 2190 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5986 {
5987 ASTExprDelete* del = new ASTExprDelete((*yylocp));
5988 ASTExpr* operand = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5989 del->operand = operand;
5990 (*yyvalp) = del;}
5991 #line 5992 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5992 break;
5993
5994 case 337: /* Expr_18: Expr_17 */
5995 #line 2197 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
5996 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5997 #line 5998 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
5998 break;
5999
6000 case 338: /* Expr_18: Expr_17 ASSIGN Expr_18 */
6001 #line 2199 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6002 {(*yyvalp) = new ASTExprAssign((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6003 #line 6004 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6004 break;
6005
6006 case 339: /* Expr_18: Expr_17 PLUSASSIGN Expr_18 */
6007 #line 2201 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6008 {
6009 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6010 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6011 (*yyvalp) = new ASTExprAssign(left, new ASTExprPlus(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6012 #line 6013 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6013 break;
6014
6015 case 340: /* Expr_18: Expr_17 MINUSASSIGN Expr_18 */
6016 #line 2206 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6017 {
6018 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6019 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6020 (*yyvalp) = new ASTExprAssign(left, new ASTExprMinus(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6021 #line 6022 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6022 break;
6023
6024 case 341: /* Expr_18: Expr_17 TIMESASSIGN Expr_18 */
6025 #line 2211 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6026 {
6027 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6028 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6029 (*yyvalp) = new ASTExprAssign(left, new ASTExprTimes(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6030 #line 6031 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6031 break;
6032
6033 case 342: /* Expr_18: Expr_17 DIVIDEASSIGN Expr_18 */
6034 #line 2216 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6035 {
6036 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6037 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6038 (*yyvalp) = new ASTExprAssign(left, new ASTExprDivide(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6039 #line 6040 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6040 break;
6041
6042 case 343: /* Expr_18: Expr_17 MODULOASSIGN Expr_18 */
6043 #line 2221 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6044 {
6045 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6046 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6047 (*yyvalp) = new ASTExprAssign(left, new ASTExprModulo(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6048 #line 6049 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6049 break;
6050
6051 case 344: /* Expr_18: Expr_17 LSHIFTASSIGN Expr_18 */
6052 #line 2226 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6053 {
6054 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6055 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6056 (*yyvalp) = new ASTExprAssign(left, new ASTExprLShift(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6057 #line 6058 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6058 break;
6059
6060 case 345: /* Expr_18: Expr_17 RSHIFTASSIGN Expr_18 */
6061 #line 2231 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6062 {
6063 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6064 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6065 (*yyvalp) = new ASTExprAssign(left, new ASTExprRShift(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6066 #line 6067 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6067 break;
6068
6069 case 346: /* Expr_18: Expr_17 BITANDASSIGN Expr_18 */
6070 #line 2236 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6071 {
6072 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6073 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6074 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitAnd(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6075 #line 6076 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6076 break;
6077
6078 case 347: /* Expr_18: Expr_17 BITNOTASSIGN Expr_18 */
6079 #line 2242 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6080 {
6081 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6082 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6083 ASTExprBitAnd* rval = new ASTExprBitAnd(left->clone(), new ASTExprBitNot(right, (*yylocp)), (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc));
6084 (*yyvalp) = new ASTExprAssign(left, rval, (*yylocp));}
6085 #line 6086 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6086 break;
6087
6088 case 348: /* Expr_18: Expr_17 BITXORASSIGN Expr_18 */
6089 #line 2248 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6090 {
6091 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6092 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6093 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitXor(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6094 #line 6095 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6095 break;
6096
6097 case 349: /* Expr_18: Expr_17 BITORASSIGN Expr_18 */
6098 #line 2253 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6099 {
6100 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6101 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6102 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitOr(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6103 #line 6104 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6104 break;
6105
6106 case 350: /* Expr_18: Expr_17 ANDASSIGN Expr_18 */
6107 #line 2258 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6108 {
6109 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6110 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6111 (*yyvalp) = new ASTExprAssign(left, new ASTExprAnd(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6112 #line 6113 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6113 break;
6114
6115 case 351: /* Expr_18: Expr_17 ORASSIGN Expr_18 */
6116 #line 2263 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6117 {
6118 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6119 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6120 (*yyvalp) = new ASTExprAssign(left, new ASTExprOr(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6121 #line 6122 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6122 break;
6123
6124 case 352: /* Expression: Expr_18 */
6125 #line 2269 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6126 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6127 #line 6128 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6128 break;
6129
6130 case 353: /* Statement_Expression: Expression */
6131 #line 2272 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6132 {
6133 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6134 expr = handle_statement_expr(expr);
6135 (*yyvalp) = expr;}
6136 #line 6137 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6137 break;
6138
6139 case 354: /* Expression_Constant: Expression */
6140 #line 2279 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6141 {
6142 ASTExpr* content = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6143 (*yyvalp) = new ASTExprConst(content, (*yylocp));}
6144 #line 6145 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6145 break;
6146
6147 case 355: /* Expression_Const_Range: Expression_Range */
6148 #line 2285 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6149 {
6150 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6151 ASTExpr* start = range->start.release();
6152 range->start = new ASTExprConst(start, start->location);
6153 ASTExpr* end = range->end.release();
6154 range->end = new ASTExprConst(end, end->location);
6155 (*yyvalp) = range;
6156 }
6157 #line 6158 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6158 break;
6159
6160 case 356: /* Expression_Range: Expression RANGE Expression */
6161 #line 2296 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6162 {
6163 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6164 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6165 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6166 #line 6167 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6167 break;
6168
6169 case 357: /* Expression_Range: Expression RANGE_LR Expression */
6170 #line 2301 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6171 {
6172 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6173 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6174 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6175 #line 6176 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6176 break;
6177
6178 case 358: /* Expression_Range: Expression RANGE_L Expression */
6179 #line 2306 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6180 {
6181 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6182 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6183 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_L, (*yylocp));}
6184 #line 6185 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6185 break;
6186
6187 case 359: /* Expression_Range: Expression RANGE_R Expression */
6188 #line 2311 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6189 {
6190 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6191 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6192 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_R, (*yylocp));}
6193 #line 6194 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6194 break;
6195
6196 case 360: /* Expression_Range: Expression RANGE_N Expression */
6197 #line 2316 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6198 {
6199 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6200 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6201 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_N, (*yylocp));}
6202 #line 6203 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6203 break;
6204
6205 case 361: /* Expression_Range: LBRACKET Expression COMMA Expression RBRACKET */
6206 #line 2321 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6207 {
6208 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6209 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6210 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6211 #line 6212 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6212 break;
6213
6214 case 362: /* Expression_Range: LBRACKET Expression COMMA Expression RPAREN */
6215 #line 2326 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6216 {
6217 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6218 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6219 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_L, (*yylocp));}
6220 #line 6221 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6221 break;
6222
6223 case 363: /* Expression_Range: LPAREN Expression COMMA Expression RBRACKET */
6224 #line 2331 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6225 {
6226 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6227 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6228 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_R, (*yylocp));}
6229 #line 6230 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6230 break;
6231
6232 case 364: /* Expression_Range: LPAREN Expression COMMA Expression RPAREN */
6233 #line 2336 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6234 {
6235 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6236 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6237 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_N, (*yylocp));}
6238 #line 6239 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6239 break;
6240
6241 case 365: /* Literal: NUMBER */
6242 #line 2346 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6243 {
6244 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6245 (*yyvalp) = new ASTNumberLiteral(val, (*yylocp));}
6246 #line 6247 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6247 break;
6248
6249 case 366: /* Literal: LONGNUMBER */
6250 #line 2349 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6251 {
6252 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6253 (*yyvalp) = new ASTLongNumberLiteral(val, (*yylocp));}
6254 #line 6255 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6255 break;
6256
6257 case 367: /* Literal: SINGLECHAR */
6258 #line 2352 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6259 {
6260 ASTString* as = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6261 ASTFloat* number = new ASTFloat(int(as->getValue().at(1)), 0, (*yylocp));
6262 (*yyvalp) = new ASTCharLiteral(number, (*yylocp));}
6263 #line 6264 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6264 break;
6265
6266 case 368: /* Literal: Literal_String */
6267 #line 2356 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6268 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6269 #line 6270 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6270 break;
6271
6272 case 369: /* Literal: Literal_Bool */
6273 #line 2357 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6274 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6275 #line 6276 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6276 break;
6277
6278 case 370: /* Literal: Literal_Array */
6279 #line 2358 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6280 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6281 #line 6282 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6282 break;
6283
6284 case 371: /* Literal: OPTIONVALUE LPAREN IDENTIFIER RPAREN */
6285 #line 2359 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6286 {
6287 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6288 (*yyvalp) = new ASTOptionValue(name->getValue(), (*yylocp));
6289 delete name;}
6290 #line 6291 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6291 break;
6292
6293 case 372: /* Literal: ISINCLUDED LPAREN IMPORTSTRING RPAREN */
6294 #line 2363 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6295 {
6296 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6297 (*yyvalp) = new ASTIsIncluded(name->getValue(), (*yylocp));
6298 delete name;}
6299 #line 6300 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6300 break;
6301
6302 case 373: /* QuotedString: QuotedString QUOTEDSTRING */
6303 #line 2370 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6304 {
6305 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6306 ASTString* rawstr = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6307 str->append(rawstr->getValue());
6308 delete rawstr;
6309 (*yyvalp) = str;}
6310 #line 6311 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6311 break;
6312
6313 case 374: /* QuotedString: QUOTEDSTRING */
6314 #line 2376 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6315 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6316 #line 6317 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6317 break;
6318
6319 case 375: /* Literal_String: QuotedString */
6320 #line 2380 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6321 {
6322 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6323 ASTStringLiteral* str = new ASTStringLiteral(*rawstring);
6324 delete rawstring;
6325 (*yyvalp) = str;}
6326 #line 6327 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6327 break;
6328
6329 case 376: /* Literal_Bool: ZTRUE */
6330 #line 2389 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6331 {(*yyvalp) = new ASTBoolLiteral(true, (*yylocp));}
6332 #line 6333 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6333 break;
6334
6335 case 377: /* Literal_Bool: ZFALSE */
6336 #line 2390 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6337 {(*yyvalp) = new ASTBoolLiteral(false, (*yylocp));}
6338 #line 6339 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6339 break;
6340
6341 case 378: /* Literal_Array: LT DataType LBRACKET Expression_Constant RBRACKET GT LBRACE Literal_Array_Body RBRACE */
6342 #line 2397 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6343 {
6344 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-7)].yystate.yysemantics.yyval;
6345 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-5)].yystate.yysemantics.yyval;
6346 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6347 al->type = type;
6348 al->size = size;
6349 al->location = (*yylocp);
6350 (*yyvalp) = al;
6351 }
6352 #line 6353 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6353 break;
6354
6355 case 379: /* Literal_Array: LT DataType LBRACKET RBRACKET GT LBRACE Literal_Array_Body RBRACE */
6356 #line 2409 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6357 {
6358 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
6359 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6360 al->type = type;
6361 al->location = (*yylocp);
6362 (*yyvalp) = al;
6363 }
6364 #line 6365 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6365 break;
6366
6367 case 380: /* Literal_Array: LT DataType LBRACKET Expression_Constant RBRACKET GT LBRACE RBRACE */
6368 #line 2419 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6369 {
6370 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
6371 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
6372 ASTArrayLiteral* al = new ASTArrayLiteral((*yylocp));
6373 al->type = type;
6374 al->size = size;
6375 (*yyvalp) = al;
6376 }
6377 #line 6378 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6378 break;
6379
6380 case 381: /* Literal_Array: LBRACE Literal_Array_Body RBRACE */
6381 #line 2428 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6382 {
6383 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6384 al->location = (*yylocp);
6385 (*yyvalp) = al;}
6386 #line 6387 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6387 break;
6388
6389 case 382: /* Literal_Array_Body: Literal_Array_Body COMMA Expression */
6390 #line 2435 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6391 {
6392 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6393 ASTExpr* element = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6394 al->elements.push_back(element);
6395 (*yyvalp) = al;}
6396 #line 6397 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6397 break;
6398
6399 case 383: /* Literal_Array_Body: Expression */
6400 #line 2440 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
6401 {
6402 ASTExpr* element = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6403 ASTArrayLiteral* al = new ASTArrayLiteral((*yylocp));
6404 al->elements.push_back(element);
6405 (*yyvalp) = al;}
6406 #line 6407 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6407 break;
6408
6409
6410 #line 6411 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/y.tab.cpp"
6411
6412 default: break;
6413 }
6414 YY_SYMBOL_PRINT ("-> $$ =", yylhsNonterm (yyrule), yyvalp, yylocp);
6415
6416 7455512 return yyok;
6417 # undef yyerrok
6418 # undef YYABORT
6419 # undef YYACCEPT
6420 # undef YYNOMEM
6421 # undef YYERROR
6422 # undef YYBACKUP
6423 # undef yyclearin
6424 # undef YYRECOVERING
6425 }
6426
6427
6428 static void
6429 yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1)
6430 {
6431 YY_USE (yy0);
6432 YY_USE (yy1);
6433
6434 switch (yyn)
6435 {
6436
6437 default: break;
6438 }
6439 }
6440
6441 /* Bison grammar-table manipulation. */
6442
6443 /*-----------------------------------------------.
6444 | Release the memory associated to this symbol. |
6445 `-----------------------------------------------*/
6446
6447 static void
6448 2880 yydestruct (const char *yymsg,
6449 yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, std::unique_ptr<ZScript::ASTFile>& root)
6450 {
6451 YY_USE (yyvaluep);
6452 YY_USE (yylocationp);
6453 2880 YY_USE (root);
6454
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2880 times.
2880 if (!yymsg)
6455 yymsg = "Deleting";
6456 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
6457
6458 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6459 YY_USE (yykind);
6460 YY_IGNORE_MAYBE_UNINITIALIZED_END
6461 2880 }
6462
6463 /** Number of symbols composing the right hand side of rule #RULE. */
6464 static inline int
6465 7458045 yyrhsLength (yyRuleNum yyrule)
6466 {
6467 7458045 return yyr2[yyrule];
6468 }
6469
6470 static void
6471 2879 yydestroyGLRState (char const *yymsg, yyGLRState *yys, std::unique_ptr<ZScript::ASTFile>& root)
6472 {
6473
1/2
✓ Branch 0 taken 2879 times.
✗ Branch 1 not taken.
2879 if (yys->yyresolved)
6474 5758 yydestruct (yymsg, yy_accessing_symbol (yys->yylrState),
6475 2879 &yys->yysemantics.yyval, &yys->yyloc, root);
6476 else
6477 {
6478 #if YYDEBUG
6479 if (yydebug)
6480 {
6481 if (yys->yysemantics.yyfirstVal)
6482 YY_FPRINTF ((stderr, "%s unresolved", yymsg));
6483 else
6484 YY_FPRINTF ((stderr, "%s incomplete", yymsg));
6485 YY_SYMBOL_PRINT ("", yy_accessing_symbol (yys->yylrState), YY_NULLPTR, &yys->yyloc);
6486 }
6487 #endif
6488
6489 if (yys->yysemantics.yyfirstVal)
6490 {
6491 yySemanticOption *yyoption = yys->yysemantics.yyfirstVal;
6492 yyGLRState *yyrh;
6493 int yyn;
6494 for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule);
6495 yyn > 0;
6496 yyrh = yyrh->yypred, yyn -= 1)
6497 yydestroyGLRState (yymsg, yyrh, root);
6498 }
6499 }
6500 2879 }
6501
6502 #define yypact_value_is_default(Yyn) \
6503 ((Yyn) == YYPACT_NINF)
6504
6505 /** True iff LR state YYSTATE has only a default reduction (regardless
6506 * of token). */
6507 static inline yybool
6508 14607596 yyisDefaultedState (yy_state_t yystate)
6509 {
6510 14607596 return yypact_value_is_default (yypact[yystate]);
6511 }
6512
6513 /** The default reduction for YYSTATE, assuming it has one. */
6514 static inline yyRuleNum
6515 3454610 yydefaultAction (yy_state_t yystate)
6516 {
6517 3454610 return yydefact[yystate];
6518 }
6519
6520 #define yytable_value_is_error(Yyn) \
6521 0
6522
6523 /** The action to take in YYSTATE on seeing YYTOKEN.
6524 * Result R means
6525 * R < 0: Reduce on rule -R.
6526 * R = 0: Error.
6527 * R > 0: Shift to state R.
6528 * Set *YYCONFLICTS to a pointer into yyconfl to a 0-terminated list
6529 * of conflicting reductions.
6530 */
6531 static inline int
6532 5576573 yygetLRActions (yy_state_t yystate, yysymbol_kind_t yytoken, const short** yyconflicts)
6533 {
6534 5576573 int yyindex = yypact[yystate] + yytoken;
6535
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 5576573 times.
5576573 if (yytoken == YYSYMBOL_YYerror)
6536 {
6537 // This is the error token.
6538 *yyconflicts = yyconfl;
6539 return 0;
6540 }
6541
2/2
✓ Branch 0 taken 3943744 times.
✓ Branch 1 taken 1632829 times.
11153146 else if (yyisDefaultedState (yystate)
6542
3/6
✓ Branch 0 taken 5576573 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5576573 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5576573 times.
✗ Branch 5 not taken.
5576573 || yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken)
6543 {
6544 3943744 *yyconflicts = yyconfl;
6545 3943744 return -yydefact[yystate];
6546 }
6547 else if (! yytable_value_is_error (yytable[yyindex]))
6548 {
6549 1632829 *yyconflicts = yyconfl + yyconflp[yyindex];
6550 1632829 return yytable[yyindex];
6551 }
6552 else
6553 {
6554 *yyconflicts = yyconfl + yyconflp[yyindex];
6555 return 0;
6556 }
6557 5576573 }
6558
6559 /** Compute post-reduction state.
6560 * \param yystate the current state
6561 * \param yysym the nonterminal to push on the stack
6562 */
6563 static inline yy_state_t
6564 7458045 yyLRgotoState (yy_state_t yystate, yysymbol_kind_t yysym)
6565 {
6566 7458045 int yyr = yypgoto[yysym - YYNTOKENS] + yystate;
6567
6/6
✓ Branch 0 taken 5900247 times.
✓ Branch 1 taken 1557798 times.
✓ Branch 2 taken 5849275 times.
✓ Branch 3 taken 50972 times.
✓ Branch 4 taken 1339883 times.
✓ Branch 5 taken 4509392 times.
7458045 if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate)
6568 1339883 return yytable[yyr];
6569 else
6570 6118162 return yydefgoto[yysym - YYNTOKENS];
6571 7458045 }
6572
6573 static inline yybool
6574 5576253 yyisShiftAction (int yyaction)
6575 {
6576 5576253 return 0 < yyaction;
6577 }
6578
6579 static inline yybool
6580 4003436 yyisErrorAction (int yyaction)
6581 {
6582 4003436 return yyaction == 0;
6583 }
6584
6585 /* GLRStates */
6586
6587 /** Return a fresh GLRStackItem in YYSTACKP. The item is an LR state
6588 * if YYISSTATE, and otherwise a semantic option. Callers should call
6589 * YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient
6590 * headroom. */
6591
6592 static inline yyGLRStackItem*
6593 9034835 yynewGLRStackItem (yyGLRStack* yystackp, yybool yyisState)
6594 {
6595 9034835 yyGLRStackItem* yynewItem = yystackp->yynextFree;
6596 9034835 yystackp->yyspaceLeft -= 1;
6597 9034835 yystackp->yynextFree += 1;
6598 9034835 yynewItem->yystate.yyisState = yyisState;
6599 9034835 return yynewItem;
6600 }
6601
6602 /** Add a new semantic action that will execute the action for rule
6603 * YYRULE on the semantic values in YYRHS to the list of
6604 * alternative actions for YYSTATE. Assumes that YYRHS comes from
6605 * stack #YYK of *YYSTACKP. */
6606 static void
6607 2533 yyaddDeferredAction (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyGLRState* yystate,
6608 yyGLRState* yyrhs, yyRuleNum yyrule)
6609 {
6610 2533 yySemanticOption* yynewOption =
6611 2533 &yynewGLRStackItem (yystackp, yyfalse)->yyoption;
6612 YY_ASSERT (!yynewOption->yyisState);
6613 2533 yynewOption->yystate = yyrhs;
6614 2533 yynewOption->yyrule = yyrule;
6615
1/2
✓ Branch 0 taken 2533 times.
✗ Branch 1 not taken.
2533 if (yystackp->yytops.yylookaheadNeeds[yyk])
6616 {
6617 2533 yynewOption->yyrawchar = yychar;
6618 2533 yynewOption->yyval = yylval;
6619 2533 yynewOption->yyloc = yylloc;
6620 2533 }
6621 else
6622 yynewOption->yyrawchar = TOK_YYEMPTY;
6623 2533 yynewOption->yynext = yystate->yysemantics.yyfirstVal;
6624 2533 yystate->yysemantics.yyfirstVal = yynewOption;
6625
6626
1/2
✓ Branch 0 taken 2533 times.
✗ Branch 1 not taken.
2533 YY_RESERVE_GLRSTACK (yystackp);
6627 2533 }
6628
6629 /* GLRStacks */
6630
6631 /** Initialize YYSET to a singleton set containing an empty stack. */
6632 static yybool
6633 1440 yyinitStateSet (yyGLRStateSet* yyset)
6634 {
6635 1440 yyset->yysize = 1;
6636 1440 yyset->yycapacity = 16;
6637 1440 yyset->yystates
6638 2880 = YY_CAST (yyGLRState**,
6639 YYMALLOC (YY_CAST (YYSIZE_T, yyset->yycapacity)
6640 * sizeof yyset->yystates[0]));
6641
1/2
✓ Branch 0 taken 1440 times.
✗ Branch 1 not taken.
1440 if (! yyset->yystates)
6642 return yyfalse;
6643 1440 yyset->yystates[0] = YY_NULLPTR;
6644 1440 yyset->yylookaheadNeeds
6645 2880 = YY_CAST (yybool*,
6646 YYMALLOC (YY_CAST (YYSIZE_T, yyset->yycapacity)
6647 * sizeof yyset->yylookaheadNeeds[0]));
6648
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1440 times.
1440 if (! yyset->yylookaheadNeeds)
6649 {
6650 YYFREE (yyset->yystates);
6651 return yyfalse;
6652 }
6653 2880 memset (yyset->yylookaheadNeeds,
6654 0,
6655 1440 YY_CAST (YYSIZE_T, yyset->yycapacity) * sizeof yyset->yylookaheadNeeds[0]);
6656 1440 return yytrue;
6657 1440 }
6658
6659 1440 static void yyfreeStateSet (yyGLRStateSet* yyset)
6660 {
6661 1440 YYFREE (yyset->yystates);
6662 1440 YYFREE (yyset->yylookaheadNeeds);
6663 1440 }
6664
6665 /** Initialize *YYSTACKP to a single empty stack, with total maximum
6666 * capacity for all stacks of YYSIZE. */
6667 static yybool
6668 1440 yyinitGLRStack (yyGLRStack* yystackp, YYPTRDIFF_T yysize)
6669 {
6670 1440 yystackp->yyerrState = 0;
6671 1440 yynerrs = 0;
6672 1440 yystackp->yyspaceLeft = yysize;
6673 1440 yystackp->yyitems
6674 2880 = YY_CAST (yyGLRStackItem*,
6675 YYMALLOC (YY_CAST (YYSIZE_T, yysize)
6676 * sizeof yystackp->yynextFree[0]));
6677
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1440 times.
1440 if (!yystackp->yyitems)
6678 return yyfalse;
6679 1440 yystackp->yynextFree = yystackp->yyitems;
6680 1440 yystackp->yysplitPoint = YY_NULLPTR;
6681 1440 yystackp->yylastDeleted = YY_NULLPTR;
6682 1440 return yyinitStateSet (&yystackp->yytops);
6683 1440 }
6684
6685
6686 #if YYSTACKEXPANDABLE
6687 # define YYRELOC(YYFROMITEMS, YYTOITEMS, YYX, YYTYPE) \
6688 &((YYTOITEMS) \
6689 - ((YYFROMITEMS) - YY_REINTERPRET_CAST (yyGLRStackItem*, (YYX))))->YYTYPE
6690
6691 /** If *YYSTACKP is expandable, extend it. WARNING: Pointers into the
6692 stack from outside should be considered invalid after this call.
6693 We always expand when there are 1 or fewer items left AFTER an
6694 allocation, so that we can avoid having external pointers exist
6695 across an allocation. */
6696 static void
6697 yyexpandGLRStack (yyGLRStack* yystackp)
6698 {
6699 yyGLRStackItem* yynewItems;
6700 yyGLRStackItem* yyp0, *yyp1;
6701 YYPTRDIFF_T yynewSize;
6702 YYPTRDIFF_T yyn;
6703 YYPTRDIFF_T yysize = yystackp->yynextFree - yystackp->yyitems;
6704 if (YYMAXDEPTH - YYHEADROOM < yysize)
6705 yyMemoryExhausted (yystackp);
6706 yynewSize = 2*yysize;
6707 if (YYMAXDEPTH < yynewSize)
6708 yynewSize = YYMAXDEPTH;
6709 yynewItems
6710 = YY_CAST (yyGLRStackItem*,
6711 YYMALLOC (YY_CAST (YYSIZE_T, yynewSize)
6712 * sizeof yynewItems[0]));
6713 if (! yynewItems)
6714 yyMemoryExhausted (yystackp);
6715 for (yyp0 = yystackp->yyitems, yyp1 = yynewItems, yyn = yysize;
6716 0 < yyn;
6717 yyn -= 1, yyp0 += 1, yyp1 += 1)
6718 {
6719 *yyp1 = *yyp0;
6720 if (*YY_REINTERPRET_CAST (yybool *, yyp0))
6721 {
6722 yyGLRState* yys0 = &yyp0->yystate;
6723 yyGLRState* yys1 = &yyp1->yystate;
6724 if (yys0->yypred != YY_NULLPTR)
6725 yys1->yypred =
6726 YYRELOC (yyp0, yyp1, yys0->yypred, yystate);
6727 if (! yys0->yyresolved && yys0->yysemantics.yyfirstVal != YY_NULLPTR)
6728 yys1->yysemantics.yyfirstVal =
6729 YYRELOC (yyp0, yyp1, yys0->yysemantics.yyfirstVal, yyoption);
6730 }
6731 else
6732 {
6733 yySemanticOption* yyv0 = &yyp0->yyoption;
6734 yySemanticOption* yyv1 = &yyp1->yyoption;
6735 if (yyv0->yystate != YY_NULLPTR)
6736 yyv1->yystate = YYRELOC (yyp0, yyp1, yyv0->yystate, yystate);
6737 if (yyv0->yynext != YY_NULLPTR)
6738 yyv1->yynext = YYRELOC (yyp0, yyp1, yyv0->yynext, yyoption);
6739 }
6740 }
6741 if (yystackp->yysplitPoint != YY_NULLPTR)
6742 yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems,
6743 yystackp->yysplitPoint, yystate);
6744
6745 for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1)
6746 if (yystackp->yytops.yystates[yyn] != YY_NULLPTR)
6747 yystackp->yytops.yystates[yyn] =
6748 YYRELOC (yystackp->yyitems, yynewItems,
6749 yystackp->yytops.yystates[yyn], yystate);
6750 YYFREE (yystackp->yyitems);
6751 yystackp->yyitems = yynewItems;
6752 yystackp->yynextFree = yynewItems + yysize;
6753 yystackp->yyspaceLeft = yynewSize - yysize;
6754 }
6755 #endif
6756
6757 static void
6758 1440 yyfreeGLRStack (yyGLRStack* yystackp)
6759 {
6760 1440 YYFREE (yystackp->yyitems);
6761 1440 yyfreeStateSet (&yystackp->yytops);
6762 1440 }
6763
6764 /** Assuming that YYS is a GLRState somewhere on *YYSTACKP, update the
6765 * splitpoint of *YYSTACKP, if needed, so that it is at least as deep as
6766 * YYS. */
6767 static inline void
6768 2533 yyupdateSplit (yyGLRStack* yystackp, yyGLRState* yys)
6769 {
6770
3/4
✓ Branch 0 taken 2533 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2333 times.
✓ Branch 3 taken 200 times.
2533 if (yystackp->yysplitPoint != YY_NULLPTR && yystackp->yysplitPoint > yys)
6771 200 yystackp->yysplitPoint = yys;
6772 2533 }
6773
6774 /** Invalidate stack #YYK in *YYSTACKP. */
6775 static inline void
6776 160 yymarkStackDeleted (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
6777 {
6778
1/2
✓ Branch 0 taken 160 times.
✗ Branch 1 not taken.
160 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
6779 160 yystackp->yylastDeleted = yystackp->yytops.yystates[yyk];
6780 160 yystackp->yytops.yystates[yyk] = YY_NULLPTR;
6781 160 }
6782
6783 /** Undelete the last stack in *YYSTACKP that was marked as deleted. Can
6784 only be done once after a deletion, and only when all other stacks have
6785 been deleted. */
6786 static void
6787 yyundeleteLastStack (yyGLRStack* yystackp)
6788 {
6789 if (yystackp->yylastDeleted == YY_NULLPTR || yystackp->yytops.yysize != 0)
6790 return;
6791 yystackp->yytops.yystates[0] = yystackp->yylastDeleted;
6792 yystackp->yytops.yysize = 1;
6793 YY_DPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n"));
6794 yystackp->yylastDeleted = YY_NULLPTR;
6795 }
6796
6797 static inline void
6798 161 yyremoveDeletes (yyGLRStack* yystackp)
6799 {
6800 YYPTRDIFF_T yyi, yyj;
6801 161 yyi = yyj = 0;
6802
2/2
✓ Branch 0 taken 321 times.
✓ Branch 1 taken 161 times.
482 while (yyj < yystackp->yytops.yysize)
6803 {
6804
2/2
✓ Branch 0 taken 161 times.
✓ Branch 1 taken 160 times.
321 if (yystackp->yytops.yystates[yyi] == YY_NULLPTR)
6805 {
6806
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 160 times.
160 if (yyi == yyj)
6807 160 YY_DPRINTF ((stderr, "Removing dead stacks.\n"));
6808 160 yystackp->yytops.yysize -= 1;
6809 160 }
6810 else
6811 {
6812 161 yystackp->yytops.yystates[yyj] = yystackp->yytops.yystates[yyi];
6813 /* In the current implementation, it's unnecessary to copy
6814 yystackp->yytops.yylookaheadNeeds[yyi] since, after
6815 yyremoveDeletes returns, the parser immediately either enters
6816 deterministic operation or shifts a token. However, it doesn't
6817 hurt, and the code might evolve to need it. */
6818 161 yystackp->yytops.yylookaheadNeeds[yyj] =
6819 161 yystackp->yytops.yylookaheadNeeds[yyi];
6820
1/2
✓ Branch 0 taken 161 times.
✗ Branch 1 not taken.
161 if (yyj != yyi)
6821 YY_DPRINTF ((stderr, "Rename stack %ld -> %ld.\n",
6822 YY_CAST (long, yyi), YY_CAST (long, yyj)));
6823 161 yyj += 1;
6824 }
6825 321 yyi += 1;
6826 }
6827 161 }
6828
6829 /** Shift to a new state on stack #YYK of *YYSTACKP, corresponding to LR
6830 * state YYLRSTATE, at input position YYPOSN, with (resolved) semantic
6831 * value *YYVALP and source location *YYLOCP. */
6832 static inline void
6833 9029769 yyglrShift (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yy_state_t yylrState,
6834 YYPTRDIFF_T yyposn,
6835 YYSTYPE* yyvalp, YYLTYPE* yylocp)
6836 {
6837 9029769 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
6838
6839 9029769 yynewState->yylrState = yylrState;
6840 9029769 yynewState->yyposn = yyposn;
6841 9029769 yynewState->yyresolved = yytrue;
6842 9029769 yynewState->yypred = yystackp->yytops.yystates[yyk];
6843 9029769 yynewState->yysemantics.yyval = *yyvalp;
6844 9029769 yynewState->yyloc = *yylocp;
6845 9029769 yystackp->yytops.yystates[yyk] = yynewState;
6846
6847
1/2
✓ Branch 0 taken 9029769 times.
✗ Branch 1 not taken.
9029769 YY_RESERVE_GLRSTACK (yystackp);
6848 9029769 }
6849
6850 /** Shift stack #YYK of *YYSTACKP, to a new state corresponding to LR
6851 * state YYLRSTATE, at input position YYPOSN, with the (unresolved)
6852 * semantic value of YYRHS under the action for YYRULE. */
6853 static inline void
6854 2533 yyglrShiftDefer (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yy_state_t yylrState,
6855 YYPTRDIFF_T yyposn, yyGLRState* yyrhs, yyRuleNum yyrule)
6856 {
6857 2533 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
6858 YY_ASSERT (yynewState->yyisState);
6859
6860 2533 yynewState->yylrState = yylrState;
6861 2533 yynewState->yyposn = yyposn;
6862 2533 yynewState->yyresolved = yyfalse;
6863 2533 yynewState->yypred = yystackp->yytops.yystates[yyk];
6864 2533 yynewState->yysemantics.yyfirstVal = YY_NULLPTR;
6865 2533 yystackp->yytops.yystates[yyk] = yynewState;
6866
6867 /* Invokes YY_RESERVE_GLRSTACK. */
6868 2533 yyaddDeferredAction (yystackp, yyk, yynewState, yyrhs, yyrule);
6869 2533 }
6870
6871 #if YYDEBUG
6872
6873 /*----------------------------------------------------------------------.
6874 | Report that stack #YYK of *YYSTACKP is going to be reduced by YYRULE. |
6875 `----------------------------------------------------------------------*/
6876
6877 static inline void
6878 yy_reduce_print (yybool yynormal, yyGLRStackItem* yyvsp, YYPTRDIFF_T yyk,
6879 yyRuleNum yyrule, std::unique_ptr<ZScript::ASTFile>& root)
6880 {
6881 int yynrhs = yyrhsLength (yyrule);
6882 int yylow = 1;
6883 int yyi;
6884 YY_FPRINTF ((stderr, "Reducing stack %ld by rule %d (line %d):\n",
6885 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule]));
6886 if (! yynormal)
6887 yyfillin (yyvsp, 1, -yynrhs);
6888 /* The symbols being reduced. */
6889 for (yyi = 0; yyi < yynrhs; yyi++)
6890 {
6891 YY_FPRINTF ((stderr, " $%d = ", yyi + 1));
6892 yy_symbol_print (stderr,
6893 yy_accessing_symbol (yyvsp[yyi - yynrhs + 1].yystate.yylrState),
6894 &yyvsp[yyi - yynrhs + 1].yystate.yysemantics.yyval,
6895 &(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL ((yyi + 1) - (yynrhs))].yystate.yyloc) , root);
6896 if (!yyvsp[yyi - yynrhs + 1].yystate.yyresolved)
6897 YY_FPRINTF ((stderr, " (unresolved)"));
6898 YY_FPRINTF ((stderr, "\n"));
6899 }
6900 }
6901 #endif
6902
6903 /** Pop the symbols consumed by reduction #YYRULE from the top of stack
6904 * #YYK of *YYSTACKP, and perform the appropriate semantic action on their
6905 * semantic values. Assumes that all ambiguities in semantic values
6906 * have been previously resolved. Set *YYVALP to the resulting value,
6907 * and *YYLOCP to the computed location (if any). Return value is as
6908 * for userAction. */
6909 static inline YYRESULTTAG
6910 7455512 yydoAction (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyRuleNum yyrule,
6911 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::unique_ptr<ZScript::ASTFile>& root)
6912 {
6913 7455512 int yynrhs = yyrhsLength (yyrule);
6914
6915
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 7455512 times.
7455512 if (yystackp->yysplitPoint == YY_NULLPTR)
6916 {
6917 /* Standard special case: single stack. */
6918 7455512 yyGLRStackItem* yyrhs
6919 7455512 = YY_REINTERPRET_CAST (yyGLRStackItem*, yystackp->yytops.yystates[yyk]);
6920 YY_ASSERT (yyk == 0);
6921 7455512 yystackp->yynextFree -= yynrhs;
6922 7455512 yystackp->yyspaceLeft += yynrhs;
6923 7455512 yystackp->yytops.yystates[0] = & yystackp->yynextFree[-1].yystate;
6924 14911024 return yyuserAction (yyrule, yynrhs, yyrhs, yystackp, yyk,
6925 7455512 yyvalp, yylocp, root);
6926 }
6927 else
6928 {
6929 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
6930 yyGLRState* yys = yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred
6931 = yystackp->yytops.yystates[yyk];
6932 int yyi;
6933 if (yynrhs == 0)
6934 /* Set default location. */
6935 yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yys->yyloc;
6936 for (yyi = 0; yyi < yynrhs; yyi += 1)
6937 {
6938 yys = yys->yypred;
6939 YY_ASSERT (yys);
6940 }
6941 yyupdateSplit (yystackp, yys);
6942 yystackp->yytops.yystates[yyk] = yys;
6943 return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
6944 yystackp, yyk, yyvalp, yylocp, root);
6945 }
6946 7455512 }
6947
6948 /** Pop items off stack #YYK of *YYSTACKP according to grammar rule YYRULE,
6949 * and push back on the resulting nonterminal symbol. Perform the
6950 * semantic action associated with YYRULE and store its value with the
6951 * newly pushed state, if YYFORCEEVAL or if *YYSTACKP is currently
6952 * unambiguous. Otherwise, store the deferred semantic action with
6953 * the new state. If the new state would have an identical input
6954 * position, LR state, and predecessor to an existing state on the stack,
6955 * it is identified with that existing state, eliminating stack #YYK from
6956 * *YYSTACKP. In this case, the semantic value is
6957 * added to the options for the existing state's semantic value.
6958 */
6959 static inline YYRESULTTAG
6960 7458045 yyglrReduce (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyRuleNum yyrule,
6961 yybool yyforceEval, std::unique_ptr<ZScript::ASTFile>& root)
6962 {
6963 7458045 YYPTRDIFF_T yyposn = yystackp->yytops.yystates[yyk]->yyposn;
6964
6965
3/4
✓ Branch 0 taken 2533 times.
✓ Branch 1 taken 7455512 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2533 times.
7458045 if (yyforceEval || yystackp->yysplitPoint == YY_NULLPTR)
6966 {
6967 YYSTYPE yyval;
6968 YYLTYPE yyloc;
6969
6970 7455512 YYRESULTTAG yyflag = yydoAction (yystackp, yyk, yyrule, &yyval, &yyloc, root);
6971
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 7455512 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
7455512 if (yyflag == yyerr && yystackp->yysplitPoint != YY_NULLPTR)
6972 YY_DPRINTF ((stderr,
6973 "Parse on stack %ld rejected by rule %d (line %d).\n",
6974 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule]));
6975
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 7455512 times.
7455512 if (yyflag != yyok)
6976 return yyflag;
6977 14911024 yyglrShift (yystackp, yyk,
6978 14911024 yyLRgotoState (yystackp->yytops.yystates[yyk]->yylrState,
6979 7455512 yylhsNonterm (yyrule)),
6980 7455512 yyposn, &yyval, &yyloc);
6981 7455512 }
6982 else
6983 {
6984 YYPTRDIFF_T yyi;
6985 int yyn;
6986 2533 yyGLRState* yys, *yys0 = yystackp->yytops.yystates[yyk];
6987 yy_state_t yynewLRState;
6988
6989
2/2
✓ Branch 0 taken 2616 times.
✓ Branch 1 taken 2533 times.
5149 for (yys = yystackp->yytops.yystates[yyk], yyn = yyrhsLength (yyrule);
6990 5149 0 < yyn; yyn -= 1)
6991 {
6992 2616 yys = yys->yypred;
6993 YY_ASSERT (yys);
6994 2616 }
6995 2533 yyupdateSplit (yystackp, yys);
6996 2533 yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule));
6997 2533 YY_DPRINTF ((stderr,
6998 "Reduced stack %ld by rule %d (line %d); action deferred. "
6999 "Now in state %d.\n",
7000 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule],
7001 yynewLRState));
7002
2/2
✓ Branch 0 taken 2533 times.
✓ Branch 1 taken 5066 times.
7599 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
7003
3/4
✓ Branch 0 taken 2533 times.
✓ Branch 1 taken 2533 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2533 times.
7599 if (yyi != yyk && yystackp->yytops.yystates[yyi] != YY_NULLPTR)
7004 {
7005 2533 yyGLRState *yysplit = yystackp->yysplitPoint;
7006 2533 yyGLRState *yyp = yystackp->yytops.yystates[yyi];
7007
5/6
✓ Branch 0 taken 3031 times.
✓ Branch 1 taken 2035 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3031 times.
✓ Branch 4 taken 2533 times.
✓ Branch 5 taken 2533 times.
5066 while (yyp != yys && yyp != yysplit && yyp->yyposn >= yyposn)
7008 {
7009
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 2533 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
2533 if (yyp->yylrState == yynewLRState && yyp->yypred == yys)
7010 {
7011 yyaddDeferredAction (yystackp, yyk, yyp, yys0, yyrule);
7012 yymarkStackDeleted (yystackp, yyk);
7013 YY_DPRINTF ((stderr, "Merging stack %ld into stack %ld.\n",
7014 YY_CAST (long, yyk), YY_CAST (long, yyi)));
7015 return yyok;
7016 }
7017 2533 yyp = yyp->yypred;
7018 }
7019 2533 }
7020 2533 yystackp->yytops.yystates[yyk] = yys;
7021 2533 yyglrShiftDefer (yystackp, yyk, yynewLRState, yyposn, yys0, yyrule);
7022 }
7023 7458045 return yyok;
7024 7458045 }
7025
7026 static YYPTRDIFF_T
7027 160 yysplitStack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
7028 {
7029
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 160 times.
160 if (yystackp->yysplitPoint == YY_NULLPTR)
7030 {
7031 YY_ASSERT (yyk == 0);
7032 160 yystackp->yysplitPoint = yystackp->yytops.yystates[yyk];
7033 160 }
7034
1/2
✓ Branch 0 taken 160 times.
✗ Branch 1 not taken.
160 if (yystackp->yytops.yycapacity <= yystackp->yytops.yysize)
7035 {
7036 YYPTRDIFF_T state_size = YYSIZEOF (yystackp->yytops.yystates[0]);
7037 YYPTRDIFF_T half_max_capacity = YYSIZE_MAXIMUM / 2 / state_size;
7038 if (half_max_capacity < yystackp->yytops.yycapacity)
7039 yyMemoryExhausted (yystackp);
7040 yystackp->yytops.yycapacity *= 2;
7041
7042 {
7043 yyGLRState** yynewStates
7044 = YY_CAST (yyGLRState**,
7045 YYREALLOC (yystackp->yytops.yystates,
7046 (YY_CAST (YYSIZE_T, yystackp->yytops.yycapacity)
7047 * sizeof yynewStates[0])));
7048 if (yynewStates == YY_NULLPTR)
7049 yyMemoryExhausted (yystackp);
7050 yystackp->yytops.yystates = yynewStates;
7051 }
7052
7053 {
7054 yybool* yynewLookaheadNeeds
7055 = YY_CAST (yybool*,
7056 YYREALLOC (yystackp->yytops.yylookaheadNeeds,
7057 (YY_CAST (YYSIZE_T, yystackp->yytops.yycapacity)
7058 * sizeof yynewLookaheadNeeds[0])));
7059 if (yynewLookaheadNeeds == YY_NULLPTR)
7060 yyMemoryExhausted (yystackp);
7061 yystackp->yytops.yylookaheadNeeds = yynewLookaheadNeeds;
7062 }
7063 }
7064 160 yystackp->yytops.yystates[yystackp->yytops.yysize]
7065 320 = yystackp->yytops.yystates[yyk];
7066 160 yystackp->yytops.yylookaheadNeeds[yystackp->yytops.yysize]
7067 320 = yystackp->yytops.yylookaheadNeeds[yyk];
7068 160 yystackp->yytops.yysize += 1;
7069 160 return yystackp->yytops.yysize - 1;
7070 }
7071
7072 /** True iff YYY0 and YYY1 represent identical options at the top level.
7073 * That is, they represent the same rule applied to RHS symbols
7074 * that produce the same terminal symbols. */
7075 static yybool
7076 yyidenticalOptions (yySemanticOption* yyy0, yySemanticOption* yyy1)
7077 {
7078 if (yyy0->yyrule == yyy1->yyrule)
7079 {
7080 yyGLRState *yys0, *yys1;
7081 int yyn;
7082 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
7083 yyn = yyrhsLength (yyy0->yyrule);
7084 yyn > 0;
7085 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
7086 if (yys0->yyposn != yys1->yyposn)
7087 return yyfalse;
7088 return yytrue;
7089 }
7090 else
7091 return yyfalse;
7092 }
7093
7094 /** Assuming identicalOptions (YYY0,YYY1), destructively merge the
7095 * alternative semantic values for the RHS-symbols of YYY1 and YYY0. */
7096 static void
7097 yymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1)
7098 {
7099 yyGLRState *yys0, *yys1;
7100 int yyn;
7101 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
7102 yyn = yyrhsLength (yyy0->yyrule);
7103 0 < yyn;
7104 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
7105 {
7106 if (yys0 == yys1)
7107 break;
7108 else if (yys0->yyresolved)
7109 {
7110 yys1->yyresolved = yytrue;
7111 yys1->yysemantics.yyval = yys0->yysemantics.yyval;
7112 }
7113 else if (yys1->yyresolved)
7114 {
7115 yys0->yyresolved = yytrue;
7116 yys0->yysemantics.yyval = yys1->yysemantics.yyval;
7117 }
7118 else
7119 {
7120 yySemanticOption** yyz0p = &yys0->yysemantics.yyfirstVal;
7121 yySemanticOption* yyz1 = yys1->yysemantics.yyfirstVal;
7122 while (yytrue)
7123 {
7124 if (yyz1 == *yyz0p || yyz1 == YY_NULLPTR)
7125 break;
7126 else if (*yyz0p == YY_NULLPTR)
7127 {
7128 *yyz0p = yyz1;
7129 break;
7130 }
7131 else if (*yyz0p < yyz1)
7132 {
7133 yySemanticOption* yyz = *yyz0p;
7134 *yyz0p = yyz1;
7135 yyz1 = yyz1->yynext;
7136 (*yyz0p)->yynext = yyz;
7137 }
7138 yyz0p = &(*yyz0p)->yynext;
7139 }
7140 yys1->yysemantics.yyfirstVal = yys0->yysemantics.yyfirstVal;
7141 }
7142 }
7143 }
7144
7145 /** Y0 and Y1 represent two possible actions to take in a given
7146 * parsing state; return 0 if no combination is possible,
7147 * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */
7148 static int
7149 yypreference (yySemanticOption* y0, yySemanticOption* y1)
7150 {
7151 yyRuleNum r0 = y0->yyrule, r1 = y1->yyrule;
7152 int p0 = yydprec[r0], p1 = yydprec[r1];
7153
7154 if (p0 == p1)
7155 {
7156 if (yymerger[r0] == 0 || yymerger[r0] != yymerger[r1])
7157 return 0;
7158 else
7159 return 1;
7160 }
7161 if (p0 == 0 || p1 == 0)
7162 return 0;
7163 if (p0 < p1)
7164 return 3;
7165 if (p1 < p0)
7166 return 2;
7167 return 0;
7168 }
7169
7170 static YYRESULTTAG
7171 yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root);
7172
7173
7174 /** Resolve the previous YYN states starting at and including state YYS
7175 * on *YYSTACKP. If result != yyok, some states may have been left
7176 * unresolved possibly with empty semantic option chains. Regardless
7177 * of whether result = yyok, each state has been left with consistent
7178 * data so that yydestroyGLRState can be invoked if necessary. */
7179 static YYRESULTTAG
7180 563 yyresolveStates (yyGLRState* yys, int yyn,
7181 yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7182 {
7183
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 403 times.
563 if (0 < yyn)
7184 {
7185 YY_ASSERT (yys->yypred);
7186
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 403 times.
403 YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp, root));
7187
1/2
✓ Branch 0 taken 403 times.
✗ Branch 1 not taken.
403 if (! yys->yyresolved)
7188 YYCHK (yyresolveValue (yys, yystackp, root));
7189 403 }
7190 563 return yyok;
7191 563 }
7192
7193 /** Resolve the states for the RHS of YYOPT on *YYSTACKP, perform its
7194 * user action, and return the semantic value and location in *YYVALP
7195 * and *YYLOCP. Regardless of whether result = yyok, all RHS states
7196 * have been destroyed (assuming the user action destroys all RHS
7197 * semantic values if invoked). */
7198 static YYRESULTTAG
7199 yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp,
7200 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::unique_ptr<ZScript::ASTFile>& root)
7201 {
7202 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
7203 int yynrhs = yyrhsLength (yyopt->yyrule);
7204 YYRESULTTAG yyflag =
7205 yyresolveStates (yyopt->yystate, yynrhs, yystackp, root);
7206 if (yyflag != yyok)
7207 {
7208 yyGLRState *yys;
7209 for (yys = yyopt->yystate; yynrhs > 0; yys = yys->yypred, yynrhs -= 1)
7210 yydestroyGLRState ("Cleanup: popping", yys, root);
7211 return yyflag;
7212 }
7213
7214 yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yyopt->yystate;
7215 if (yynrhs == 0)
7216 /* Set default location. */
7217 yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yyopt->yystate->yyloc;
7218 {
7219 int yychar_current = yychar;
7220 YYSTYPE yylval_current = yylval;
7221 YYLTYPE yylloc_current = yylloc;
7222 yychar = yyopt->yyrawchar;
7223 yylval = yyopt->yyval;
7224 yylloc = yyopt->yyloc;
7225 yyflag = yyuserAction (yyopt->yyrule, yynrhs,
7226 yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
7227 yystackp, -1, yyvalp, yylocp, root);
7228 yychar = yychar_current;
7229 yylval = yylval_current;
7230 yylloc = yylloc_current;
7231 }
7232 return yyflag;
7233 }
7234
7235 #if YYDEBUG
7236 static void
7237 yyreportTree (yySemanticOption* yyx, int yyindent)
7238 {
7239 int yynrhs = yyrhsLength (yyx->yyrule);
7240 int yyi;
7241 yyGLRState* yys;
7242 yyGLRState* yystates[1 + YYMAXRHS];
7243 yyGLRState yyleftmost_state;
7244
7245 for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred)
7246 yystates[yyi] = yys;
7247 if (yys == YY_NULLPTR)
7248 {
7249 yyleftmost_state.yyposn = 0;
7250 yystates[0] = &yyleftmost_state;
7251 }
7252 else
7253 yystates[0] = yys;
7254
7255 if (yyx->yystate->yyposn < yys->yyposn + 1)
7256 YY_FPRINTF ((stderr, "%*s%s -> <Rule %d, empty>\n",
7257 yyindent, "", yysymbol_name (yylhsNonterm (yyx->yyrule)),
7258 yyx->yyrule - 1));
7259 else
7260 YY_FPRINTF ((stderr, "%*s%s -> <Rule %d, tokens %ld .. %ld>\n",
7261 yyindent, "", yysymbol_name (yylhsNonterm (yyx->yyrule)),
7262 yyx->yyrule - 1, YY_CAST (long, yys->yyposn + 1),
7263 YY_CAST (long, yyx->yystate->yyposn)));
7264 for (yyi = 1; yyi <= yynrhs; yyi += 1)
7265 {
7266 if (yystates[yyi]->yyresolved)
7267 {
7268 if (yystates[yyi-1]->yyposn+1 > yystates[yyi]->yyposn)
7269 YY_FPRINTF ((stderr, "%*s%s <empty>\n", yyindent+2, "",
7270 yysymbol_name (yy_accessing_symbol (yystates[yyi]->yylrState))));
7271 else
7272 YY_FPRINTF ((stderr, "%*s%s <tokens %ld .. %ld>\n", yyindent+2, "",
7273 yysymbol_name (yy_accessing_symbol (yystates[yyi]->yylrState)),
7274 YY_CAST (long, yystates[yyi-1]->yyposn + 1),
7275 YY_CAST (long, yystates[yyi]->yyposn)));
7276 }
7277 else
7278 yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2);
7279 }
7280 }
7281 #endif
7282
7283 static YYRESULTTAG
7284 yyreportAmbiguity (yySemanticOption* yyx0,
7285 yySemanticOption* yyx1, std::unique_ptr<ZScript::ASTFile>& root)
7286 {
7287 YY_USE (yyx0);
7288 YY_USE (yyx1);
7289
7290 #if YYDEBUG
7291 YY_FPRINTF ((stderr, "Ambiguity detected.\n"));
7292 YY_FPRINTF ((stderr, "Option 1,\n"));
7293 yyreportTree (yyx0, 2);
7294 YY_FPRINTF ((stderr, "\nOption 2,\n"));
7295 yyreportTree (yyx1, 2);
7296 YY_FPRINTF ((stderr, "\n"));
7297 #endif
7298
7299 yyerror (root, YY_("syntax is ambiguous"));
7300 return yyabort;
7301 }
7302
7303 /** Resolve the locations for each of the YYN1 states in *YYSTACKP,
7304 * ending at YYS1. Has no effect on previously resolved states.
7305 * The first semantic option of a state is always chosen. */
7306 static void
7307 yyresolveLocations (yyGLRState *yys1, int yyn1,
7308 yyGLRStack *yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7309 {
7310 if (0 < yyn1)
7311 {
7312 yyresolveLocations (yys1->yypred, yyn1 - 1, yystackp, root);
7313 if (!yys1->yyresolved)
7314 {
7315 yyGLRStackItem yyrhsloc[1 + YYMAXRHS];
7316 int yynrhs;
7317 yySemanticOption *yyoption = yys1->yysemantics.yyfirstVal;
7318 YY_ASSERT (yyoption);
7319 yynrhs = yyrhsLength (yyoption->yyrule);
7320 if (0 < yynrhs)
7321 {
7322 yyGLRState *yys;
7323 int yyn;
7324 yyresolveLocations (yyoption->yystate, yynrhs,
7325 yystackp, root);
7326 for (yys = yyoption->yystate, yyn = yynrhs;
7327 yyn > 0;
7328 yys = yys->yypred, yyn -= 1)
7329 yyrhsloc[yyn].yystate.yyloc = yys->yyloc;
7330 }
7331 else
7332 {
7333 /* Both yyresolveAction and yyresolveLocations traverse the GSS
7334 in reverse rightmost order. It is only necessary to invoke
7335 yyresolveLocations on a subforest for which yyresolveAction
7336 would have been invoked next had an ambiguity not been
7337 detected. Thus the location of the previous state (but not
7338 necessarily the previous state itself) is guaranteed to be
7339 resolved already. */
7340 yyGLRState *yyprevious = yyoption->yystate;
7341 yyrhsloc[0].yystate.yyloc = yyprevious->yyloc;
7342 }
7343 YYLLOC_DEFAULT ((yys1->yyloc), yyrhsloc, yynrhs);
7344 }
7345 }
7346 }
7347
7348 /** Resolve the ambiguity represented in state YYS in *YYSTACKP,
7349 * perform the indicated actions, and set the semantic value of YYS.
7350 * If result != yyok, the chain of semantic options in YYS has been
7351 * cleared instead or it has been left unmodified except that
7352 * redundant options may have been removed. Regardless of whether
7353 * result = yyok, YYS has been left with consistent data so that
7354 * yydestroyGLRState can be invoked if necessary. */
7355 static YYRESULTTAG
7356 yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7357 {
7358 yySemanticOption* yyoptionList = yys->yysemantics.yyfirstVal;
7359 yySemanticOption* yybest = yyoptionList;
7360 yySemanticOption** yypp;
7361 yybool yymerge = yyfalse;
7362 YYSTYPE yyval;
7363 YYRESULTTAG yyflag;
7364 YYLTYPE *yylocp = &yys->yyloc;
7365
7366 for (yypp = &yyoptionList->yynext; *yypp != YY_NULLPTR; )
7367 {
7368 yySemanticOption* yyp = *yypp;
7369
7370 if (yyidenticalOptions (yybest, yyp))
7371 {
7372 yymergeOptionSets (yybest, yyp);
7373 *yypp = yyp->yynext;
7374 }
7375 else
7376 {
7377 switch (yypreference (yybest, yyp))
7378 {
7379 case 0:
7380 yyresolveLocations (yys, 1, yystackp, root);
7381 return yyreportAmbiguity (yybest, yyp, root);
7382 break;
7383 case 1:
7384 yymerge = yytrue;
7385 break;
7386 case 2:
7387 break;
7388 case 3:
7389 yybest = yyp;
7390 yymerge = yyfalse;
7391 break;
7392 default:
7393 /* This cannot happen so it is not worth a YY_ASSERT (yyfalse),
7394 but some compilers complain if the default case is
7395 omitted. */
7396 break;
7397 }
7398 yypp = &yyp->yynext;
7399 }
7400 }
7401
7402 if (yymerge)
7403 {
7404 yySemanticOption* yyp;
7405 int yyprec = yydprec[yybest->yyrule];
7406 yyflag = yyresolveAction (yybest, yystackp, &yyval, yylocp, root);
7407 if (yyflag == yyok)
7408 for (yyp = yybest->yynext; yyp != YY_NULLPTR; yyp = yyp->yynext)
7409 {
7410 if (yyprec == yydprec[yyp->yyrule])
7411 {
7412 YYSTYPE yyval_other;
7413 YYLTYPE yydummy;
7414 yyflag = yyresolveAction (yyp, yystackp, &yyval_other, &yydummy, root);
7415 if (yyflag != yyok)
7416 {
7417 yydestruct ("Cleanup: discarding incompletely merged value for",
7418 yy_accessing_symbol (yys->yylrState),
7419 &yyval, yylocp, root);
7420 break;
7421 }
7422 yyuserMerge (yymerger[yyp->yyrule], &yyval, &yyval_other);
7423 }
7424 }
7425 }
7426 else
7427 yyflag = yyresolveAction (yybest, yystackp, &yyval, yylocp, root);
7428
7429 if (yyflag == yyok)
7430 {
7431 yys->yyresolved = yytrue;
7432 yys->yysemantics.yyval = yyval;
7433 }
7434 else
7435 yys->yysemantics.yyfirstVal = YY_NULLPTR;
7436 return yyflag;
7437 }
7438
7439 static YYRESULTTAG
7440 160 yyresolveStack (yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7441 {
7442
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 160 times.
160 if (yystackp->yysplitPoint != YY_NULLPTR)
7443 {
7444 yyGLRState* yys;
7445 int yyn;
7446
7447
2/2
✓ Branch 0 taken 403 times.
✓ Branch 1 taken 160 times.
563 for (yyn = 0, yys = yystackp->yytops.yystates[0];
7448 563 yys != yystackp->yysplitPoint;
7449 403 yys = yys->yypred, yyn += 1)
7450 403 continue;
7451
1/2
✓ Branch 0 taken 160 times.
✗ Branch 1 not taken.
160 YYCHK (yyresolveStates (yystackp->yytops.yystates[0], yyn, yystackp
7452 , root));
7453 160 }
7454 160 return yyok;
7455 160 }
7456
7457 /** Called when returning to deterministic operation to clean up the extra
7458 * stacks. */
7459 static void
7460 161 yycompressStack (yyGLRStack* yystackp)
7461 {
7462 /* yyr is the state after the split point. */
7463 yyGLRState *yyr;
7464
7465
3/4
✓ Branch 0 taken 161 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 160 times.
✓ Branch 3 taken 1 times.
161 if (yystackp->yytops.yysize != 1 || yystackp->yysplitPoint == YY_NULLPTR)
7466 1 return;
7467
7468 {
7469 yyGLRState *yyp, *yyq;
7470
2/2
✓ Branch 0 taken 403 times.
✓ Branch 1 taken 160 times.
563 for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = YY_NULLPTR;
7471 563 yyp != yystackp->yysplitPoint;
7472 403 yyr = yyp, yyp = yyq, yyq = yyp->yypred)
7473 403 yyp->yypred = yyr;
7474 }
7475
7476 160 yystackp->yyspaceLeft += yystackp->yynextFree - yystackp->yyitems;
7477 160 yystackp->yynextFree = YY_REINTERPRET_CAST (yyGLRStackItem*, yystackp->yysplitPoint) + 1;
7478 160 yystackp->yyspaceLeft -= yystackp->yynextFree - yystackp->yyitems;
7479 160 yystackp->yysplitPoint = YY_NULLPTR;
7480 160 yystackp->yylastDeleted = YY_NULLPTR;
7481
7482
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 403 times.
563 while (yyr != YY_NULLPTR)
7483 {
7484 403 yystackp->yynextFree->yystate = *yyr;
7485 403 yyr = yyr->yypred;
7486 403 yystackp->yynextFree->yystate.yypred = &yystackp->yynextFree[-1].yystate;
7487 403 yystackp->yytops.yystates[0] = &yystackp->yynextFree->yystate;
7488 403 yystackp->yynextFree += 1;
7489 403 yystackp->yyspaceLeft -= 1;
7490 }
7491 161 }
7492
7493 static YYRESULTTAG
7494 480 yyprocessOneStack (yyGLRStack* yystackp, YYPTRDIFF_T yyk,
7495 YYPTRDIFF_T yyposn, std::unique_ptr<ZScript::ASTFile>& root)
7496 {
7497
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 2693 times.
2853 while (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
7498 {
7499 2693 yy_state_t yystate = yystackp->yytops.yystates[yyk]->yylrState;
7500 2693 YY_DPRINTF ((stderr, "Stack %ld Entering state %d\n",
7501 YY_CAST (long, yyk), yystate));
7502
7503 YY_ASSERT (yystate != YYFINAL);
7504
7505
2/2
✓ Branch 0 taken 721 times.
✓ Branch 1 taken 1972 times.
2693 if (yyisDefaultedState (yystate))
7506 {
7507 YYRESULTTAG yyflag;
7508 721 yyRuleNum yyrule = yydefaultAction (yystate);
7509
1/2
✓ Branch 0 taken 721 times.
✗ Branch 1 not taken.
721 if (yyrule == 0)
7510 {
7511 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yyk)));
7512 yymarkStackDeleted (yystackp, yyk);
7513 return yyok;
7514 }
7515 721 yyflag = yyglrReduce (yystackp, yyk, yyrule, yyimmediate[yyrule], root);
7516
1/2
✓ Branch 0 taken 721 times.
✗ Branch 1 not taken.
721 if (yyflag == yyerr)
7517 {
7518 YY_DPRINTF ((stderr,
7519 "Stack %ld dies "
7520 "(predicate failure or explicit user error).\n",
7521 YY_CAST (long, yyk)));
7522 yymarkStackDeleted (yystackp, yyk);
7523 return yyok;
7524 }
7525
1/2
✓ Branch 0 taken 721 times.
✗ Branch 1 not taken.
721 if (yyflag != yyok)
7526 return yyflag;
7527 721 }
7528 else
7529 {
7530 1972 yysymbol_kind_t yytoken = yygetToken (&yychar, root);
7531 const short* yyconflicts;
7532 1972 const int yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
7533 1972 yystackp->yytops.yylookaheadNeeds[yyk] = yytrue;
7534
7535
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 1972 times.
2132 for (/* nothing */; *yyconflicts; yyconflicts += 1)
7536 {
7537 YYRESULTTAG yyflag;
7538 160 YYPTRDIFF_T yynewStack = yysplitStack (yystackp, yyk);
7539 160 YY_DPRINTF ((stderr, "Splitting off stack %ld from %ld.\n",
7540 YY_CAST (long, yynewStack), YY_CAST (long, yyk)));
7541 320 yyflag = yyglrReduce (yystackp, yynewStack,
7542 160 *yyconflicts,
7543 160 yyimmediate[*yyconflicts], root);
7544
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 160 times.
160 if (yyflag == yyok)
7545
1/2
✓ Branch 0 taken 160 times.
✗ Branch 1 not taken.
160 YYCHK (yyprocessOneStack (yystackp, yynewStack,
7546 yyposn, root));
7547 else if (yyflag == yyerr)
7548 {
7549 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yynewStack)));
7550 yymarkStackDeleted (yystackp, yynewStack);
7551 }
7552 else
7553 return yyflag;
7554 160 }
7555
7556
2/2
✓ Branch 0 taken 1812 times.
✓ Branch 1 taken 160 times.
1972 if (yyisShiftAction (yyaction))
7557 160 break;
7558
2/2
✓ Branch 0 taken 1652 times.
✓ Branch 1 taken 160 times.
1812 else if (yyisErrorAction (yyaction))
7559 {
7560 160 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yyk)));
7561 160 yymarkStackDeleted (yystackp, yyk);
7562 160 break;
7563 }
7564 else
7565 {
7566 3304 YYRESULTTAG yyflag = yyglrReduce (yystackp, yyk, -yyaction,
7567 1652 yyimmediate[-yyaction], root);
7568
1/2
✓ Branch 0 taken 1652 times.
✗ Branch 1 not taken.
1652 if (yyflag == yyerr)
7569 {
7570 YY_DPRINTF ((stderr,
7571 "Stack %ld dies "
7572 "(predicate failure or explicit user error).\n",
7573 YY_CAST (long, yyk)));
7574 yymarkStackDeleted (yystackp, yyk);
7575 break;
7576 }
7577
1/2
✓ Branch 0 taken 1652 times.
✗ Branch 1 not taken.
1652 else if (yyflag != yyok)
7578 return yyflag;
7579 }
7580 }
7581 }
7582 480 return yyok;
7583 480 }
7584
7585 /* Put in YYARG at most YYARGN of the expected tokens given the
7586 current YYSTACKP, and return the number of tokens stored in YYARG. If
7587 YYARG is null, return the number of expected tokens (guaranteed to
7588 be less than YYNTOKENS). */
7589 static int
7590 1 yypcontext_expected_tokens (const yyGLRStack* yystackp,
7591 yysymbol_kind_t yyarg[], int yyargn)
7592 {
7593 /* Actual size of YYARG. */
7594 1 int yycount = 0;
7595 1 int yyn = yypact[yystackp->yytops.yystates[0]->yylrState];
7596
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (!yypact_value_is_default (yyn))
7597 {
7598 /* Start YYX at -YYN if negative to avoid negative indexes in
7599 YYCHECK. In other words, skip the first -YYN actions for
7600 this state because they are default actions. */
7601
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 int yyxbegin = yyn < 0 ? -yyn : 0;
7602 /* Stay within bounds of both yycheck and yytname. */
7603 1 int yychecklim = YYLAST - yyn + 1;
7604
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
7605 int yyx;
7606
2/2
✓ Branch 0 taken 133 times.
✓ Branch 1 taken 1 times.
134 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
7607
3/4
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 132 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
133 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
7608 133 && !yytable_value_is_error (yytable[yyx + yyn]))
7609 {
7610
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 if (!yyarg)
7611 ++yycount;
7612
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 else if (yycount == yyargn)
7613 return 0;
7614 else
7615 1 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
7616 1 }
7617 1 }
7618
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 if (yyarg && yycount == 0 && 0 < yyargn)
7619 yyarg[0] = YYSYMBOL_YYEMPTY;
7620 1 return yycount;
7621 1 }
7622
7623 static int
7624 1 yy_syntax_error_arguments (const yyGLRStack* yystackp,
7625 yysymbol_kind_t yyarg[], int yyargn)
7626 {
7627
3/6
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 yysymbol_kind_t yytoken = yychar == TOK_YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
7628 /* Actual size of YYARG. */
7629 1 int yycount = 0;
7630 /* There are many possibilities here to consider:
7631 - If this state is a consistent state with a default action, then
7632 the only way this function was invoked is if the default action
7633 is an error action. In that case, don't check for expected
7634 tokens because there are none.
7635 - The only way there can be no lookahead present (in yychar) is if
7636 this state is a consistent state with a default action. Thus,
7637 detecting the absence of a lookahead is sufficient to determine
7638 that there is no unexpected or expected token to report. In that
7639 case, just report a simple "syntax error".
7640 - Don't assume there isn't a lookahead just because this state is a
7641 consistent state with a default action. There might have been a
7642 previous inconsistent state, consistent state with a non-default
7643 action, or user semantic action that manipulated yychar.
7644 - Of course, the expected token list depends on states to have
7645 correct lookahead information, and it depends on the parser not
7646 to perform extra reductions after fetching a lookahead from the
7647 scanner and before detecting a syntax error. Thus, state merging
7648 (from LALR or IELR) and default reductions corrupt the expected
7649 token list. However, the list is correct for canonical LR with
7650 one exception: it will still contain any token that will not be
7651 accepted due to an error action in a later state.
7652 */
7653
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (yytoken != YYSYMBOL_YYEMPTY)
7654 {
7655 int yyn;
7656
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (yyarg)
7657 1 yyarg[yycount] = yytoken;
7658 1 ++yycount;
7659 2 yyn = yypcontext_expected_tokens (yystackp,
7660
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
7661
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (yyn == YYENOMEM)
7662 return YYENOMEM;
7663 else
7664 1 yycount += yyn;
7665 1 }
7666 1 return yycount;
7667 1 }
7668
7669
7670
7671 static void
7672 1 yyreportSyntaxError (yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7673 {
7674
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (yystackp->yyerrState != 0)
7675 return;
7676 {
7677 1 yybool yysize_overflow = yyfalse;
7678 1 char* yymsg = YY_NULLPTR;
7679 enum { YYARGS_MAX = 5 };
7680 /* Internationalized format string. */
7681 1 const char *yyformat = YY_NULLPTR;
7682 /* Arguments of yyformat: reported tokens (one for the "unexpected",
7683 one per "expected"). */
7684 yysymbol_kind_t yyarg[YYARGS_MAX];
7685 /* Cumulated lengths of YYARG. */
7686 1 YYPTRDIFF_T yysize = 0;
7687
7688 /* Actual size of YYARG. */
7689 1 int yycount
7690 1 = yy_syntax_error_arguments (yystackp, yyarg, YYARGS_MAX);
7691
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 if (yycount == YYENOMEM)
7692 yyMemoryExhausted (yystackp);
7693
7694
1/7
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
1 switch (yycount)
7695 {
7696 #define YYCASE_(N, S) \
7697 case N: \
7698 yyformat = S; \
7699 break
7700 default: /* Avoid compiler warnings. */
7701 YYCASE_(0, YY_("syntax error"));
7702 YYCASE_(1, YY_("syntax error, unexpected %s"));
7703 1 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
7704 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
7705 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
7706 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
7707 #undef YYCASE_
7708 }
7709
7710 /* Compute error message size. Don't count the "%s"s, but reserve
7711 room for the terminator. */
7712 1 yysize = yystrlen (yyformat) - 2 * yycount + 1;
7713 {
7714 int yyi;
7715
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
3 for (yyi = 0; yyi < yycount; ++yyi)
7716 {
7717 2 YYPTRDIFF_T yysz
7718 2 = yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
7719
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
2 if (YYSIZE_MAXIMUM - yysize < yysz)
7720 yysize_overflow = yytrue;
7721 else
7722 2 yysize += yysz;
7723 2 }
7724 }
7725
7726
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (!yysize_overflow)
7727 1 yymsg = YY_CAST (char *, YYMALLOC (YY_CAST (YYSIZE_T, yysize)));
7728
7729
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 if (yymsg)
7730 {
7731 1 char *yyp = yymsg;
7732 1 int yyi = 0;
7733
2/2
✓ Branch 0 taken 39 times.
✓ Branch 1 taken 1 times.
40 while ((*yyp = *yyformat))
7734 {
7735
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 37 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
39 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
7736 {
7737 2 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
7738 2 yyformat += 2;
7739 2 }
7740 else
7741 {
7742 37 ++yyp;
7743 37 ++yyformat;
7744 }
7745 }
7746 1 yyerror (root, yymsg);
7747 1 YYFREE (yymsg);
7748 1 }
7749 else
7750 {
7751 yyerror (root, YY_("syntax error"));
7752 yyMemoryExhausted (yystackp);
7753 }
7754 }
7755 1 yynerrs += 1;
7756 1 }
7757
7758 /* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP,
7759 yylval, and yylloc are the syntactic category, semantic value, and location
7760 of the lookahead. */
7761 static void
7762 1 yyrecoverSyntaxError (yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7763 {
7764
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (yystackp->yyerrState == 3)
7765 /* We just shifted the error token and (perhaps) took some
7766 reductions. Skip tokens until we can proceed. */
7767 while (yytrue)
7768 {
7769 yysymbol_kind_t yytoken;
7770 int yyj;
7771 if (yychar == TOK_YYEOF)
7772 yyFail (yystackp, root, YY_NULLPTR);
7773 if (yychar != TOK_YYEMPTY)
7774 {
7775 /* We throw away the lookahead, but the error range
7776 of the shifted error token must take it into account. */
7777 yyGLRState *yys = yystackp->yytops.yystates[0];
7778 yyGLRStackItem yyerror_range[3];
7779 yyerror_range[1].yystate.yyloc = yys->yyloc;
7780 yyerror_range[2].yystate.yyloc = yylloc;
7781 YYLLOC_DEFAULT ((yys->yyloc), yyerror_range, 2);
7782 yytoken = YYTRANSLATE (yychar);
7783 yydestruct ("Error: discarding",
7784 yytoken, &yylval, &yylloc, root);
7785 yychar = TOK_YYEMPTY;
7786 }
7787 yytoken = yygetToken (&yychar, root);
7788 yyj = yypact[yystackp->yytops.yystates[0]->yylrState];
7789 if (yypact_value_is_default (yyj))
7790 return;
7791 yyj += yytoken;
7792 if (yyj < 0 || YYLAST < yyj || yycheck[yyj] != yytoken)
7793 {
7794 if (yydefact[yystackp->yytops.yystates[0]->yylrState] != 0)
7795 return;
7796 }
7797 else if (! yytable_value_is_error (yytable[yyj]))
7798 return;
7799 }
7800
7801 /* Reduce to one stack. */
7802 {
7803 YYPTRDIFF_T yyk;
7804
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 for (yyk = 0; yyk < yystackp->yytops.yysize; yyk += 1)
7805
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
7806 1 break;
7807
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 if (yyk >= yystackp->yytops.yysize)
7808 yyFail (yystackp, root, YY_NULLPTR);
7809
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 for (yyk += 1; yyk < yystackp->yytops.yysize; yyk += 1)
7810 yymarkStackDeleted (yystackp, yyk);
7811 1 yyremoveDeletes (yystackp);
7812 1 yycompressStack (yystackp);
7813 }
7814
7815 /* Pop stack until we find a state that shifts the error token. */
7816 1 yystackp->yyerrState = 3;
7817
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 2 times.
3 while (yystackp->yytops.yystates[0] != YY_NULLPTR)
7818 {
7819 2 yyGLRState *yys = yystackp->yytops.yystates[0];
7820 2 int yyj = yypact[yys->yylrState];
7821
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
2 if (! yypact_value_is_default (yyj))
7822 {
7823 1 yyj += YYSYMBOL_YYerror;
7824
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYSYMBOL_YYerror
7825
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 && yyisShiftAction (yytable[yyj]))
7826 {
7827 /* Shift the error token. */
7828 int yyaction = yytable[yyj];
7829 /* First adjust its location.*/
7830 YYLTYPE yyerrloc;
7831 yystackp->yyerror_range[2].yystate.yyloc = yylloc;
7832 YYLLOC_DEFAULT (yyerrloc, (yystackp->yyerror_range), 2);
7833 YY_SYMBOL_PRINT ("Shifting", yy_accessing_symbol (yyaction),
7834 &yylval, &yyerrloc);
7835 yyglrShift (yystackp, 0, yyaction,
7836 yys->yyposn, &yylval, &yyerrloc);
7837 yys = yystackp->yytops.yystates[0];
7838 break;
7839 }
7840 1 }
7841 2 yystackp->yyerror_range[1].yystate.yyloc = yys->yyloc;
7842
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
2 if (yys->yypred != YY_NULLPTR)
7843 1 yydestroyGLRState ("Error: popping", yys, root);
7844 2 yystackp->yytops.yystates[0] = yys->yypred;
7845 2 yystackp->yynextFree -= 1;
7846 2 yystackp->yyspaceLeft += 1;
7847 }
7848
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (yystackp->yytops.yystates[0] == YY_NULLPTR)
7849 1 yyFail (yystackp, root, YY_NULLPTR);
7850 }
7851
7852 #define YYCHK1(YYE) \
7853 do { \
7854 switch (YYE) { \
7855 case yyok: break; \
7856 case yyabort: goto yyabortlab; \
7857 case yyaccept: goto yyacceptlab; \
7858 case yyerr: goto yyuser_error; \
7859 case yynomem: goto yyexhaustedlab; \
7860 default: goto yybuglab; \
7861 } \
7862 } while (0)
7863
7864 /*----------.
7865 | yyparse. |
7866 `----------*/
7867
7868 int
7869 1440 yyparse (std::unique_ptr<ZScript::ASTFile>& root)
7870 {
7871 int yyresult;
7872 yyGLRStack yystack;
7873 1440 yyGLRStack* const yystackp = &yystack;
7874 YYPTRDIFF_T yyposn;
7875
7876 1440 YY_DPRINTF ((stderr, "Starting parse\n"));
7877
7878 1440 yychar = TOK_YYEMPTY;
7879 1440 yylval = yyval_default;
7880 1440 yylloc = yyloc_default;
7881
7882
1/2
✓ Branch 0 taken 1440 times.
✗ Branch 1 not taken.
1440 if (! yyinitGLRStack (yystackp, YYINITDEPTH))
7883 goto yyexhaustedlab;
7884
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1439 times.
✗ Branch 3 not taken.
1440 switch (YYSETJMP (yystack.yyexception_buffer))
7885 {
7886 1439 case 0: break;
7887 1 case 1: goto yyabortlab;
7888 case 2: goto yyexhaustedlab;
7889 default: goto yybuglab;
7890 }
7891 1439 yyglrShift (&yystack, 0, 0, 0, &yylval, &yylloc);
7892 1439 yyposn = 0;
7893
7894 1440 while (yytrue)
7895 {
7896 /* For efficiency, we have two loops, the first of which is
7897 specialized to deterministic operation (single stack, no
7898 potential ambiguity). */
7899 /* Standard mode. */
7900 9029769 while (yytrue)
7901 {
7902 9029769 yy_state_t yystate = yystack.yytops.yystates[0]->yylrState;
7903 9029769 YY_DPRINTF ((stderr, "Entering state %d\n", yystate));
7904
2/2
✓ Branch 0 taken 9028330 times.
✓ Branch 1 taken 1439 times.
9029769 if (yystate == YYFINAL)
7905 1439 goto yyacceptlab;
7906
2/2
✓ Branch 0 taken 3453889 times.
✓ Branch 1 taken 5574441 times.
9028330 if (yyisDefaultedState (yystate))
7907 {
7908 3453889 yyRuleNum yyrule = yydefaultAction (yystate);
7909
1/2
✓ Branch 0 taken 3453889 times.
✗ Branch 1 not taken.
3453889 if (yyrule == 0)
7910 {
7911 yystack.yyerror_range[1].yystate.yyloc = yylloc;
7912 yyreportSyntaxError (&yystack, root);
7913 goto yyuser_error;
7914 }
7915
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 3453889 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3453889 YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue, root));
7916 3453889 }
7917 else
7918 {
7919 5574441 yysymbol_kind_t yytoken = yygetToken (&yychar, root);
7920 const short* yyconflicts;
7921 5574441 int yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
7922
2/2
✓ Branch 0 taken 5574281 times.
✓ Branch 1 taken 160 times.
5574441 if (*yyconflicts)
7923 /* Enter nondeterministic mode. */
7924 160 break;
7925
2/2
✓ Branch 0 taken 1572657 times.
✓ Branch 1 taken 4001624 times.
5574281 if (yyisShiftAction (yyaction))
7926 {
7927 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
7928 1572657 yychar = TOK_YYEMPTY;
7929 1572657 yyposn += 1;
7930 1572657 yyglrShift (&yystack, 0, yyaction, yyposn, &yylval, &yylloc);
7931
1/2
✓ Branch 0 taken 1572657 times.
✗ Branch 1 not taken.
1572657 if (0 < yystack.yyerrState)
7932 yystack.yyerrState -= 1;
7933 1572657 }
7934
2/2
✓ Branch 0 taken 4001623 times.
✓ Branch 1 taken 1 times.
4001624 else if (yyisErrorAction (yyaction))
7935 {
7936 1 yystack.yyerror_range[1].yystate.yyloc = yylloc;
7937 /* Issue an error message unless the scanner already
7938 did. */
7939
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (yychar != TOK_YYerror)
7940 1 yyreportSyntaxError (&yystack, root);
7941 1 goto yyuser_error;
7942 }
7943 else
7944
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 4001623 times.
✗ Branch 5 not taken.
4001623 YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue, root));
7945 }
7946 }
7947
7948 /* Nondeterministic mode. */
7949 160 while (yytrue)
7950 {
7951 yysymbol_kind_t yytoken_to_shift;
7952 YYPTRDIFF_T yys;
7953
7954
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 160 times.
320 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
7955 160 yystackp->yytops.yylookaheadNeeds[yys] = yychar != TOK_YYEMPTY;
7956
7957 /* yyprocessOneStack returns one of three things:
7958
7959 - An error flag. If the caller is yyprocessOneStack, it
7960 immediately returns as well. When the caller is finally
7961 yyparse, it jumps to an error label via YYCHK1.
7962
7963 - yyok, but yyprocessOneStack has invoked yymarkStackDeleted
7964 (&yystack, yys), which sets the top state of yys to NULL. Thus,
7965 yyparse's following invocation of yyremoveDeletes will remove
7966 the stack.
7967
7968 - yyok, when ready to shift a token.
7969
7970 Except in the first case, yyparse will invoke yyremoveDeletes and
7971 then shift the next token onto all remaining stacks. This
7972 synchronization of the shift (that is, after all preceding
7973 reductions on all stacks) helps prevent double destructor calls
7974 on yylval in the event of memory exhaustion. */
7975
7976
2/2
✓ Branch 0 taken 320 times.
✓ Branch 1 taken 160 times.
480 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
7977
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 320 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
320 YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn, root));
7978 160 yyremoveDeletes (&yystack);
7979
1/2
✓ Branch 0 taken 160 times.
✗ Branch 1 not taken.
160 if (yystack.yytops.yysize == 0)
7980 {
7981 yyundeleteLastStack (&yystack);
7982 if (yystack.yytops.yysize == 0)
7983 yyFail (&yystack, root, YY_("syntax error"));
7984 YYCHK1 (yyresolveStack (&yystack, root));
7985 YY_DPRINTF ((stderr, "Returning to deterministic operation.\n"));
7986 yystack.yyerror_range[1].yystate.yyloc = yylloc;
7987 yyreportSyntaxError (&yystack, root);
7988 goto yyuser_error;
7989 }
7990
7991 /* If any yyglrShift call fails, it will fail after shifting. Thus,
7992 a copy of yylval will already be on stack 0 in the event of a
7993 failure in the following loop. Thus, yychar is set to TOK_YYEMPTY
7994 before the loop to make sure the user destructor for yylval isn't
7995 called twice. */
7996
2/4
✓ Branch 0 taken 160 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 160 times.
160 yytoken_to_shift = YYTRANSLATE (yychar);
7997 160 yychar = TOK_YYEMPTY;
7998 160 yyposn += 1;
7999
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 160 times.
320 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
8000 {
8001 160 yy_state_t yystate = yystack.yytops.yystates[yys]->yylrState;
8002 const short* yyconflicts;
8003 160 int yyaction = yygetLRActions (yystate, yytoken_to_shift,
8004 &yyconflicts);
8005 /* Note that yyconflicts were handled by yyprocessOneStack. */
8006 160 YY_DPRINTF ((stderr, "On stack %ld, ", YY_CAST (long, yys)));
8007 YY_SYMBOL_PRINT ("shifting", yytoken_to_shift, &yylval, &yylloc);
8008 160 yyglrShift (&yystack, yys, yyaction, yyposn,
8009 &yylval, &yylloc);
8010 160 YY_DPRINTF ((stderr, "Stack %ld now in state %d\n",
8011 YY_CAST (long, yys),
8012 yystack.yytops.yystates[yys]->yylrState));
8013 160 }
8014
8015
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 160 times.
160 if (yystack.yytops.yysize == 1)
8016 {
8017
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 160 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
160 YYCHK1 (yyresolveStack (&yystack, root));
8018 160 YY_DPRINTF ((stderr, "Returning to deterministic operation.\n"));
8019 160 yycompressStack (&yystack);
8020 160 break;
8021 }
8022 }
8023 160 continue;
8024 yyuser_error:
8025 1 yyrecoverSyntaxError (&yystack, root);
8026 1 yyposn = yystack.yytops.yystates[0]->yyposn;
8027 }
8028
8029 yyacceptlab:
8030 1439 yyresult = 0;
8031 1439 goto yyreturnlab;
8032
8033 yybuglab:
8034 YY_ASSERT (yyfalse);
8035 goto yyabortlab;
8036
8037 yyabortlab:
8038 1 yyresult = 1;
8039 1 goto yyreturnlab;
8040
8041 yyexhaustedlab:
8042 yyerror (root, YY_("memory exhausted"));
8043 yyresult = 2;
8044 goto yyreturnlab;
8045
8046 yyreturnlab:
8047
2/2
✓ Branch 0 taken 1439 times.
✓ Branch 1 taken 1 times.
1440 if (yychar != TOK_YYEMPTY)
8048 1 yydestruct ("Cleanup: discarding lookahead",
8049
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 YYTRANSLATE (yychar), &yylval, &yylloc, root);
8050
8051 /* If the stack is well-formed, pop the stack until it is empty,
8052 destroying its entries as we go. But free the stack regardless
8053 of whether it is well-formed. */
8054
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1440 times.
1440 if (yystack.yyitems)
8055 {
8056 1440 yyGLRState** yystates = yystack.yytops.yystates;
8057
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1440 times.
1440 if (yystates)
8058 {
8059 1440 YYPTRDIFF_T yysize = yystack.yytops.yysize;
8060 YYPTRDIFF_T yyk;
8061
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1440 times.
1441 for (yyk = 0; yyk < yysize; yyk += 1)
8062
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1439 times.
1440 if (yystates[yyk])
8063 {
8064
2/2
✓ Branch 0 taken 4317 times.
✓ Branch 1 taken 1439 times.
5756 while (yystates[yyk])
8065 {
8066 4317 yyGLRState *yys = yystates[yyk];
8067 4317 yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;
8068
2/2
✓ Branch 0 taken 2878 times.
✓ Branch 1 taken 1439 times.
4317 if (yys->yypred != YY_NULLPTR)
8069 2878 yydestroyGLRState ("Cleanup: popping", yys, root);
8070 4317 yystates[yyk] = yys->yypred;
8071 4317 yystack.yynextFree -= 1;
8072 4317 yystack.yyspaceLeft += 1;
8073 }
8074 1439 break;
8075 }
8076 1440 }
8077 1440 yyfreeGLRStack (&yystack);
8078 1440 }
8079
8080 1440 return yyresult;
8081 }
8082
8083 /* DEBUGGING ONLY */
8084 #if YYDEBUG
8085 /* Print *YYS and its predecessors. */
8086 static void
8087 yy_yypstack (yyGLRState* yys)
8088 {
8089 if (yys->yypred)
8090 {
8091 yy_yypstack (yys->yypred);
8092 YY_FPRINTF ((stderr, " -> "));
8093 }
8094 YY_FPRINTF ((stderr, "%d@%ld", yys->yylrState, YY_CAST (long, yys->yyposn)));
8095 }
8096
8097 /* Print YYS (possibly NULL) and its predecessors. */
8098 static void
8099 yypstates (yyGLRState* yys)
8100 {
8101 if (yys == YY_NULLPTR)
8102 YY_FPRINTF ((stderr, "<null>"));
8103 else
8104 yy_yypstack (yys);
8105 YY_FPRINTF ((stderr, "\n"));
8106 }
8107
8108 /* Print the stack #YYK. */
8109 static void
8110 yypstack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
8111 {
8112 yypstates (yystackp->yytops.yystates[yyk]);
8113 }
8114
8115 /* Print all the stacks. */
8116 static void
8117 yypdumpstack (yyGLRStack* yystackp)
8118 {
8119 #define YYINDEX(YYX) \
8120 YY_CAST (long, \
8121 ((YYX) \
8122 ? YY_REINTERPRET_CAST (yyGLRStackItem*, (YYX)) - yystackp->yyitems \
8123 : -1))
8124
8125 yyGLRStackItem* yyp;
8126 for (yyp = yystackp->yyitems; yyp < yystackp->yynextFree; yyp += 1)
8127 {
8128 YY_FPRINTF ((stderr, "%3ld. ",
8129 YY_CAST (long, yyp - yystackp->yyitems)));
8130 if (*YY_REINTERPRET_CAST (yybool *, yyp))
8131 {
8132 YY_ASSERT (yyp->yystate.yyisState);
8133 YY_ASSERT (yyp->yyoption.yyisState);
8134 YY_FPRINTF ((stderr, "Res: %d, LR State: %d, posn: %ld, pred: %ld",
8135 yyp->yystate.yyresolved, yyp->yystate.yylrState,
8136 YY_CAST (long, yyp->yystate.yyposn),
8137 YYINDEX (yyp->yystate.yypred)));
8138 if (! yyp->yystate.yyresolved)
8139 YY_FPRINTF ((stderr, ", firstVal: %ld",
8140 YYINDEX (yyp->yystate.yysemantics.yyfirstVal)));
8141 }
8142 else
8143 {
8144 YY_ASSERT (!yyp->yystate.yyisState);
8145 YY_ASSERT (!yyp->yyoption.yyisState);
8146 YY_FPRINTF ((stderr, "Option. rule: %d, state: %ld, next: %ld",
8147 yyp->yyoption.yyrule - 1,
8148 YYINDEX (yyp->yyoption.yystate),
8149 YYINDEX (yyp->yyoption.yynext)));
8150 }
8151 YY_FPRINTF ((stderr, "\n"));
8152 }
8153
8154 YY_FPRINTF ((stderr, "Tops:"));
8155 {
8156 YYPTRDIFF_T yyi;
8157 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
8158 YY_FPRINTF ((stderr, "%ld: %ld; ", YY_CAST (long, yyi),
8159 YYINDEX (yystackp->yytops.yystates[yyi])));
8160 YY_FPRINTF ((stderr, "\n"));
8161 }
8162 #undef YYINDEX
8163 }
8164 #endif
8165
8166 #undef yylval
8167 #undef yychar
8168 #undef yynerrs
8169 #undef yylloc
8170
8171
8172
8173
8174 #line 2449 "/home/runner/work/ZeldaClassic/ZeldaClassic/src/parser/ffscript.ypp"
8175
8176
8177 /* programs */
8178
8179 std::string yyerrstr(string const& msg, int32_t row, int32_t col, char const* txt)
8180 {
8181 ostringstream out;
8182 out << msg << " ["
8183 << curfilename << " "
8184 << "Line " << row << " "
8185 << "Column " << col;
8186 if (yyleng)
8187 out << " '" << txt << "'";
8188 out << "]";
8189 return out.str();
8190 }
8191 void yymsg(string const& message, int32_t row, int32_t col, char const* txt)
8192 {
8193 zconsole_info(yyerrstr(message,row,col,txt).c_str());
8194 }
8195 void yywarn(string const& message, int32_t row, int32_t col, char const* txt)
8196 {
8197 zconsole_warn(yyerrstr(message,row,col,txt).c_str());
8198 }
8199 void yyerrmsg(string const& message, int32_t row, int32_t col, char const* txt)
8200 {
8201 zparser_error_out();
8202 zconsole_error(yyerrstr(message,row,col,txt).c_str());
8203 }
8204 void yydb(string const& message, int32_t row, int32_t col, char const* txt)
8205 {
8206 zconsole_db(yyerrstr(message,row,col,txt).c_str());
8207 }
8208
8209 void yyerror(std::unique_ptr<ASTFile>&, const char *s)
8210 {
8211 yyerrmsg(s);
8212 }
8213
8214 namespace ZScript
8215 {
8216 std::unique_ptr<ASTFile> parseFile(std::string const& filename, bool is_buf)
8217 {
8218 std::unique_ptr<ASTFile> result;
8219
8220 // Reset lexer.
8221 yyin = NULL;
8222 resetLexer();
8223
8224 // Read in the file.
8225 yyin = fopen(filename.c_str(), "r");
8226 yyout = std::tmpfile();
8227 if (!yyin)
8228 {
8229 zconsole_error("Can't open input file");
8230 return nullptr;
8231 }
8232 curfilename = is_buf ? "ZQ_BUFFER" : filename;
8233
8234 // Run the parser.
8235 if (yyparse(result))
8236 {
8237 result.reset();
8238 }
8239 fclose(yyout);
8240 fclose(yyin);
8241
8242 return std::unique_ptr<ASTFile>(result.release());
8243 }
8244 };
8245